【问题标题】:e.response undefined at onFormSubmite.在 onFormSubmit 处未定义的响应
【发布时间】:2014-11-20 08:32:27
【问题描述】:

我正在尝试在表单的formSubmit 触发器处执行一个简单的脚本:

function onFormSubmit(event) {
  Logger.log(event);
  var d = event.response.getItemResponses()[0].getResponse();
  ...
}

每次触发事件时,我都会收到:

[14-11-20 09:10:50:315 CET] FormApp.getActiveForm() [0,126 Sekunden]
[14-11-20 09:10:50:403 CET] FormApp.getActiveForm() [0,085 Sekunden]
[14-11-20 09:10:50:411 CET] Ausführung wird gestartet
[14-11-20 09:10:50:418 CET] Logger.log([{authMode=FULL}, []]) [0 Sekunden]
[14-11-20 09:10:50:422 CET] Ausführung fehlgeschlagen: TypeError: Methode "getItemResponses" von undefined kann nicht aufgerufen werden. (Zeile 5, Datei "Code") (0.003 Sekunden Laufzeit insgesamt)

脚本绑定到我的表单,触发器设置为“提交表​​单时”

我的错在哪里?

【问题讨论】:

  • 我很晚了,但我刚刚遇到了这个错误,它看起来像一个权限问题。我从头开始创建一个新表单并添加了触发器,我必须授权脚本访问我的表单,然后它就可以正常工作了。虽然不知道如何在现有表单上修复它。
  • @arnaudrg 是对的。谷歌表单以某种方式搞砸了权限,您需要做的就是删除并再次添加触发器。该脚本将请求您对新触发器的许可,以便您对其进行授权。

标签: google-apps-script google-forms


【解决方案1】:

无法重现您的问题。

在为“onFormSubmit”设置了触发器的表单上尝试了此代码。能够得到变量d的第一个值。

function onFormSubmit(event) {
  Logger.log(event);

  var d = event.response.getItemResponses()[0].getResponse();
  Logger.log(d);

}

这是我的执行记录:

[14-11-20 10:37:57:103 PST] FormApp.getActiveForm() [0.078 seconds]
[14-11-20 10:37:57:250 PST] FormApp.getActiveForm() [0.079 seconds]
[14-11-20 10:37:57:312 PST] Starting execution
[14-11-20 10:37:57:316 PST] Logger.log([{response=FormResponse, source=Form,   authMode=FULL}, []]) [0 seconds]
[14-11-20 10:37:57:331 PST] FormResponse.getItemResponses() [0.014 seconds]
[14-11-20 10:37:57:334 PST] (class).getResponse() [0 seconds]
[14-11-20 10:37:57:334 PST] Logger.log([[----Value here----], []]) [0 seconds]
[14-11-20 10:37:57:335 PST] Execution succeeded [0.019 seconds total runtime]

【讨论】:

    【解决方案2】:

    截至 2020 年 6 月,onFormSubmit 触发器不返回 FormResponse 对象。

    它实际上返回了一个 google sheet form submit 事件,其中包含以下内容:

    身份验证模式
    ScriptApp.AuthMode 枚举中的值。

    例如已满

    命名值
    包含来自表单提交的问题名称和值的对象。

    例如

    {
      'First Name': ['Jane'],
      'Timestamp': ['6/7/2015 20:54:13'],
      'Last Name': ['Doe']
    }
    

    范围 一个 Range 对象,表示已编辑的单元格或单元格范围。

    triggerUid
    产生此事件的触发器的 ID。

    例如4034124084959907503

    价值观
    数组中的值与它们在电子表格中出现的顺序相同。

    例如['2015/05/04 15:00','amin@example.com','Bob','27','Bill', “28”、“苏珊”、“25”]

    参考:https://developers.google.com/apps-script/guides/triggers/events

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2021-08-11
      • 1970-01-01
      相关资源
      最近更新 更多