Google Form提交时onFormSubmit无响应数据的问题及解决
Google Form onFormSubmit事件无响应数据的问题解决
1. 为何onFormSubmit事件无响应数据?
最核心的原因是脚本所在位置错误:
- 如果你的脚本写在表单关联的Google Sheets中,而非Google Form本身的脚本编辑器,此时
onFormSubmit的事件对象e不包含response属性,自然无法通过e.response获取数据,只会返回authMode等基础信息。 - 另外你代码里存在拼写错误:
JSON.stringfy应为JSON.stringify,这会导致日志打印失败,但不是response为空的主因。
2. 是否需额外操作(如安装其他触发器)?
不需要额外安装触发器,但要确保触发器的绑定对象正确:
- 若脚本在Google Form的脚本编辑器中:触发器需设置为事件源=表单,事件类型=表单提交。
- 若脚本在关联的Google Sheets中:触发器需设置为事件源=电子表格,事件类型=表单提交。
3. 如何实现正确的功能?
根据脚本所在位置,分两种情况修改代码:
情况一:脚本位于Google Form的脚本编辑器
修正拼写错误并完善数据获取逻辑:
function onFormSubmit(e) { // 修正JSON.stringify拼写错误 Logger.log(JSON.stringify(e)); // 先判断response是否存在,避免报错 if (e.response) { const itemResponses = e.response.getItemResponses(); const payload = { answer1: itemResponses[0]?.getResponse(), answer2: itemResponses[1]?.getResponse() }; const response = UrlFetchApp.fetch('https://api.server.com/result', { method: 'POST', headers: { 'Content-Type': 'application/json', }, payload: JSON.stringify(payload), // 开启该选项可捕获API返回的错误信息,方便调试 muteHttpExceptions: true }); // 可选:打印API返回结果 Logger.log(response.getContentText()); } else { Logger.log("未获取到表单提交数据"); } }
触发器设置步骤:
- 打开Google Form,点击右上角「⋮」→「脚本编辑器」。
- 点击左侧「触发器」图标→「添加触发器」。
- 选择函数
onFormSubmit,事件源选「表单」,事件类型选「表单提交」,保存即可。
情况二:脚本位于关联的Google Sheets
此时事件对象e用values或namedValues存储提交数据,代码示例:
function onFormSubmit(e) { Logger.log(JSON.stringify(e)); // 方式1:按顺序获取(values[0]是提交时间,后续为问题答案) const answer1 = e.values[1]; const answer2 = e.values[2]; // 方式2:按问题标题获取(更直观,替换为你的实际问题标题) // const answer1 = e.namedValues["第一个问题的标题"][0]; // const answer2 = e.namedValues["第二个问题的标题"][0]; const payload = { answer1: answer1, answer2: answer2 }; const response = UrlFetchApp.fetch('https://api.server.com/result', { method: 'POST', headers: { 'Content-Type': 'application/json', }, payload: JSON.stringify(payload), muteHttpExceptions: true }); Logger.log(response.getContentText()); }
触发器设置步骤:
- 打开关联的Google Sheets,点击「扩展程序」→「Apps脚本」。
- 点击左侧「触发器」图标→「添加触发器」。
- 选择函数
onFormSubmit,事件源选「电子表格」,事件类型选「表单提交」,保存即可。
内容的提问来源于stack exchange,提问作者jykang
相关产品推荐
相关产品推荐

