如果脚本作为库导入,则google.script.run .withSuccessHandler()不会将返回值传递给函数

时间:2019-06-29 17:28:14

标签: google-apps-script web-applications

如果未导入代码且仅在工作表中,则该功能可以正常工作。

.withSuccessHandler()不会将返回值传递给被调用的函数。

code.gs中的代码返回一个布尔值(日志获取它),用.withSuccessHandler()调用的函数未获取它,并且变量为 undefined

html

<html>
  <form id="myForm">
  [...]
  <input type="button" value="Submit" 
 onClick="google.script.run.withSuccessHandler(DataSaved).withFailureHandler(Error).processForm(this.form)"
        />
</form>
<div id="Message"></div>
 <script>
    function DataSaved(ret){
    if(ret==true){
    document.getElementById('Message').innerHTML = "Finished!";
    }else{
    document.getElementById('Message').innerHTML = ret+"Wrong Sheet!";
    }
};
    function Error(err){
    document.getElementById('Message').innerHTML = "An error occurred: "+err;
};
 </script>

code.gs

function processForm(myForm) {
  var data = myForm.data
  var fu = ParseExport(data)
  console.log(typeof fu);console.log(JSON.stringify(fu))
  return fu
}

结果行是:undefinedWrong Sheet!

Stackdriver

Stackdriver-Protokolle
29.06.2019, 19:39:11
FEHLERBEHEBUNG
boolean
29.06.2019, 19:39:11
FEHLERBEHEBUNG
true

我不知道在哪里寻找错误了。甚至在脚本块中移动了google.script.run函数,以测试它是否进行了任何更改(不更改)。错误处理程序工作正常...

1 个答案:

答案 0 :(得分:0)

这是我的错误,因为导入的Sheet有一个包装器类来处理对导入的脚本函数的调用,这也需要传递返回值。