如何结合谷歌应用程序脚本processForm,withSuccessHandler和withUserObject

时间:2013-01-16 10:46:36

标签: javascript google-apps-script

所以我在这里关注文档:

https://developers.google.com/apps-script/html_service?hl=en#GoogleScriptAPI

似乎我应该能够在同一个地方使用processForm,withSuccessHandler和withUserObject,但我现在无法让它工作。这是一次尝试

<input name='submission'>
<input type='hidden' name='match' value ='<?= match?>'>
<input type='hidden' name='week' value ='<?= j?>'>
<input type='hidden' name='assignment' value ='<?= i?>'>
<input id='button' type='button' onclick='google.script.run.processForm(this.parentNode).withSuccessHandler(submissionReceived).withUserObject(this).getCurrentDate()'>

但单击按钮时会出现以下错误:

无法读取未定义

的属性'withSuccessHandler_m___'

以下工作正常:

google.script.run.withSuccessHandler(submissionReceived).processForm(this.parentNode)

但是我希望“submissionReceived”函数接收本地对象,以便我可以进行一些本地更改以反映这个特定按钮(很多)已被点击的事实。基本上这个顺序:

google.script.run.processForm(this.parentNode).withSuccessHandler(submissionReceived)

使用相同的“无法读取属性'withSuccessHandler_m___'未定义”错误,无论我是否尝试将对象传递给submissionReceived

以下将运行:

google.script.run.withSuccessHandler(submissionReceived).withUserObject(this).processForm(this.parentNode)

但是传递给submissionReceived的单个参数是未定义的

关于如何成功组合这三个函数以便在按钮点击时将对象传递给客户端javascript函数的任何想法?

1 个答案:

答案 0 :(得分:0)

我设法使用以下内容:

var r = google.script.run.withSuccessHandler(submissionReceived).withUserObject(this);r.processForm(this.parentNode); 

似乎需要首先设置successhandler。另请注意,这会将两个参数传递给submissionReceived函数,第一个函数未定义,第二个参数是当前本地对象,因此函数定义如下:

function submissionReceived(a,input) {

其中a是未定义的,输入是与脚本运行的输入标记对应的dom节点