我正在尝试使用绑定到表单的脚本从谷歌表单收集响应详细信息,使用onFormSubmit()触发器。
大多数情况下收到的细节没有错误,但偶尔会出现错误。收到触发器但没有数据传递给脚本。响应由Google表单控制台接收,但未转发给脚本。
接收数据的代码:
function onFormSubmit(e)
{
Logger.log("A response has been received!");
Logger.log(e);
var resp = e.response.getItemResponses(); //capturing trigger event output
var form = e.source;
......
出现错误的执行记录:
[16-09-27 07:29:15:073 PDT] Starting execution
[16-09-27 07:29:15:096 PDT] Logger.log([A response has been received!, []]) [0 seconds]
[16-09-27 07:29:15:097 PDT] Logger.log([{authMode=FULL, triggerUid=xxxxxxx41}, []]) [0 seconds]
[16-09-27 07:29:15:099 PDT] Execution failed: TypeError: Cannot call method "getItemResponses" of undefined. (line 18, file "Code") [0.002 seconds total runtime]
到目前为止,我已经通过复制表单并重新设置所有权限来解决它。但我想要一个解决方案,让我不再这样做。我现在第10次重复:(
当我成功收到回复时,e
也有响应密钥。
答案 0 :(得分:5)
这是一个可以防止脚本崩溃的解决方法:
function onFormSubmit(e)
{
Logger.log("A response has been received!");
// Check if e is defined
if (e) {
// Any code that use e should be inside this block
Logger.log(e);
var resp = e.response.getItemResponses(); //capturing trigger event output
var form = e.source;
} else {
// Log if e is undefined
Logger.log('e is undefined!');
}
......
我同意Rubén你应该联系谷歌支持部门来调查这个问题,特别是你可以在控制台中看到响应。
答案 1 :(得分:2)
您可能必须返回活动触发器,删除触发器,重新添加它,它将提示您输入新的访问信息。