无法通过触发函数读取Google Form响应的问题求助
问题分析与解决:表单提交触发器事件对象不匹配
错误原因
你当前配置的触发器事件来源是「From spreadsheet」(电子表格端的表单提交触发),但代码是按照Google表单端的提交触发器的事件对象结构编写的,两者的事件参数e完全不同:
- 表单端触发器的
e包含response属性,可调用getItemResponses()获取响应详情; - 电子表格端触发器的
e没有response属性,所以e.response为undefined,执行formResponse.getItemResponses()时就会抛出「Cannot read properties of undefined」错误。
两种解决办法
办法1:切换到表单端触发器(脚本绑定在Google Form上)
如果你的脚本是绑定在Google表单而非关联的电子表格上,修改触发器配置:
- 事件来源选择「From form」
- 事件类型选择「On form submit」
此时原代码即可正常运行,因为e.response会正确返回表单响应对象。
办法2:适配电子表格端触发器的事件对象(脚本绑定在Google Sheet上)
如果脚本绑定在关联的电子表格上,直接使用电子表格提交事件的e.values数组获取响应数据:
function onFormSubmit(e) { // e.values是按表单字段顺序排列的数组,第一个元素是提交时间戳 var submitTime = e.values[0]; var FirstName = e.values[1]; // 对应表单第一个字段 var LastName = e.values[2]; // 对应表单第二个字段 // 后续业务逻辑... }
注意:e.values的索引从0开始,索引0是系统自动记录的提交时间,表单的第一个字段对应索引1,以此类推。
验证说明
你之前通过注释报错行并设置固定值能正常运行,说明函数本身的执行逻辑没问题,核心问题就是事件对象的结构与代码预期不匹配。
内容的提问来源于stack exchange,提问作者Leslie
相关产品推荐
相关产品推荐

