如何在谷歌脚本中获取和使用返回值

问题描述 投票:0回答:2

我在 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 用作对象,因为这样我可以将它作为参数传递到数据函数中,但它不会显示。

javascript html dom google-apps-script
2个回答
1
投票

方法 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 脚本中所需的函数。


1
投票

试试这样写:

摆脱所有其他垃圾。

javascript:

function getData() {
  google.script.run
  .withSuccessHandler(function(obj){
    console.log(obj.foo);
  })
  .data()
}

gs:

function data() {
  return {foo:bar}
}
© www.soinside.com 2019 - 2024. All rights reserved.