我编写了一个Google表格插件,它使用模态对话框作为界面。我无法运行成功处理程序,因此我创建了一个用于测试的框架界面,并且遇到了同样的问题。
每当服务器端函数返回时,成功处理程序中指定的函数应该运行。相反,它会抛出错误“Untaught TypeError:a is not a function”。我可以通过一个按钮手动触发为处理程序指定的功能(仅为演示目的而添加。代码如下:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
function success(){
document.getElementById("waitMessage").innerHTML = "TEST";
}
function testFunc(){
google.script.run.withSuccessHandler("success").serverSideFunc();
}
</script>
</head>
<body>
<p>
Click the button to close the window
</p>
<form>
//Doesn't work
<input type="button" name="test" value="Server-side test" onclick="testFunc()">
//Works
<input type="button" name="test-client" value="Client-side test" onclick="success()">
</form>
<div id="waitMessage">
<p></p>
</div>
</body>
</html>
.gs脚本文件如下:
function serverSideFunc(){
Logger.log("");
}
如您所见,脚本文件只是一个虚拟函数,旨在触发成功处理程序。
这里发生了什么?我错过了一些简单的东西吗?
答案 0 :(得分:2)
您没有返回错误。您不要在函数名称周围加上引号来运行:
function testFunc(){
google.script.run.withSuccessHandler(success).serverSideFunc();
}