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

App Script获取Google表单响应ID发邮件报错问题求助

问题排查及修复方案
  • 核心错误点1:方法名拼写错误,FormResponse类获取ID的方法是getId(),首字母I之后的d为小写,你编写的getID()是不存在的方法,这是抛出未定义错误的根本原因
  • 核心错误点2:手动遍历所有响应取最后一条存在并发风险,短时间内多份提交时可能拿到错误的响应ID
  • 核心错误点3:事件对象用法错误,表单提交触发的事件对象e直接携带当前提交的响应实例,不需要调用getResponses方法,该方法也不存在于事件对象上
  • 核心错误点4:URL字符串缺少引号,你定义url的代码中https://docs.google.com/forms/d/没有用引号包裹,会触发语法错误

写法1:使用事件对象(更推荐,无并发问题)

function onFormSubmit(e) {
  // 基础配置
  var formID = '你从表单URL中复制的ID'; 
  var emailAddress = '你的工单队列收件邮箱';
  var emailSubject = '表单有新提交';

  // 直接从事件对象获取当前提交的响应,无需遍历
  var currentResponse = e.response;
  var responseID = currentResponse.getId();

  // 拼接有效链接
  var url = "https://docs.google.com/forms/d/" + formID + "/edit#response=" + responseID;
  var emailBody = "你收到了一条新的表单提交,直达链接:" + url;

  // 发送邮件
  MailApp.sendEmail(emailAddress, emailSubject, emailBody);
}

注意:使用该写法需要在脚本编辑器的「触发器」设置中,给onFormSubmit函数添加表单提交触发事件,触发源选择对应Google表单

写法2:手动取最新响应(仅适合低提交频率的表单)

function onFormSubmit() {
  // 基础配置
  var formID = '你从表单URL中复制的ID'; 
  var emailAddress = '你的工单队列收件邮箱';
  var emailSubject = '表单有新提交';

  // 遍历获取最新响应
  var form = FormApp.openById(formID)
  var formResponses = form.getResponses();
  var lastResponse = formResponses[formResponses.length-1];
  var responseID = lastResponse.getId();

  // 拼接有效链接
  var url = "https://docs.google.com/forms/d/" + formID + "/edit#response=" + responseID;
  var emailBody = "你收到了一条新的表单提交,直达链接:" + url;

  // 发送邮件
  MailApp.sendEmail(emailAddress, emailSubject, emailBody);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:02