在表单提交中收到的Google表单事件没有回复

时间:2016-09-02 18:49:22

标签: javascript google-apps-script google-apps google-form

我正在尝试使用绑定到表单的脚本从谷歌表单收集响应详细信息,使用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也有响应密钥。

2 个答案:

答案 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)

您可能必须返回活动触发器,删除触发器,重新添加它,它将提示您输入新的访问信息。