我在 funcs.gs 的 Google Scripts 中有一个函数返回一个对象。 根据用户输入的内容,对象返回并显示一些结果。但我想更进一步,并使用这些结果来指示是否会显示错误消息。我没有想法因此我在这里问的理由。
function data(num){
if (condition met){
let Obj = {thing1:value1, thing2: value2}
return prjObj;
//Obj works perfectly fine
}else{
let Obj = {thing1: value3, thing2: value4};
return Obj;
//this also works fine
}//end of if statement
}//end of getData function
现在我在 HTML 文件中使用一个函数(使用了 jQuery 但不需要)
$(function redbox(){
let repeater = setTimeout(redbox, 5000);
let redbox1 ={}
redbox1.hidebox = document.getElementById("something").hidden = true;
redbox1.unhidebox = document.getElementById("something").hidden = false;
//i tried this and just tried to put redbox1.unhidebox under the return statement but it does not work
//google.script.run.Data(redbox1 )
console.log(google.script.run.data());
})
我不确定为什么即使我使用 num 作为参数,数据函数也会返回 undefined 。 目标是在调用 else 语句时将隐藏元素设置为 false。我将 rexbox1 用作对象,因为这样我可以将它作为参数传递到数据函数中,但它不会显示。
方法 google.script.run.myFunction() 将返回
void
,如文档中所述:
此方法是异步的,不会直接返回;但是,服务器端函数可以将值作为参数返回客户端传递给成功处理程序
因此,要检索您的函数返回的内容,您必须将它与方法 google.script.run.withSuccessHandler() 一起使用,如下所示:
function redbox(returnedValue) {
console.log(returnedValue);
}
google.script.run.withSuccessHandler(redbox).data(num);
如果您的 Apps 脚本函数没有错误,那么从您的 Apps 脚本函数返回的值将传递给您在 HTML JavaScript 脚本中所需的函数。
试试这样写:
摆脱所有其他垃圾。
javascript:
function getData() {
google.script.run
.withSuccessHandler(function(obj){
console.log(obj.foo);
})
.data()
}
gs:
function data() {
return {foo:bar}
}