You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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("未获取到表单提交数据");
  }
}

触发器设置步骤:

  1. 打开Google Form,点击右上角「⋮」→「脚本编辑器」。
  2. 点击左侧「触发器」图标→「添加触发器」。
  3. 选择函数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());
}

触发器设置步骤:

  1. 打开关联的Google Sheets,点击「扩展程序」→「Apps脚本」。
  2. 点击左侧「触发器」图标→「添加触发器」。
  3. 选择函数onFormSubmit,事件源选「电子表格」,事件类型选「表单提交」,保存即可。

内容的提问来源于stack exchange,提问作者jykang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:54:58