【问题标题】:Google forms event received on Form submit has no responses提交表单时收到的 Google 表单事件没有响应
【发布时间】:2016-09-02 18:49:22
【问题描述】:

我正在尝试使用绑定到表单的脚本,使用 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 也有一个回复密钥。

【问题讨论】:

  • 您是否验证了用户提供了回复?
  • 是的。响应会记录在相应表单的 Google 表单仪表板中。
  • 你能告诉我们你的代码吗?
  • 您是否尝试将代码移动到接收表单数据并在那里运行触发器的电子表格中?我在那里的触发器没有问题。在使用新的表格和表格后,我还没有听说有人在使用表格时遇到问题。
  • @Fralec 抱歉,我无法显示其余代码,但它涉及使用许多其他 Google 应用程序 - 云端硬盘、表格、日历、联系人和一些高级 Google 服务 - 日历 API、管理员等。

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


【解决方案1】:

这是一个可以防止你的脚本被破坏的解决方法:

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 的观点,即您应该联系 Google 支持来调查问题,尤其是您可以在控制台中看到响应。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 为我修复!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 2017-11-28
    • 2019-08-25
    • 2019-01-12
    相关资源
    最近更新 更多