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

如何向Google表单提交的邮箱发通知?脚本读取邮箱失败求助

解决Google表单脚本无法获取提交邮箱的问题

问题根源

你的脚本中sendEmail函数使用的是硬编码的<EMAIL_ADDRESS>,没有从用户提交的表单响应中提取实际填写的邮箱地址,导致无法向提交者发送通知。

修改方案

  1. 提取用户提交的邮箱地址:在onFormSubmit函数中,遍历表单响应时,识别出邮箱对应的表单项,提取用户填写的邮箱值。
  2. 传递邮箱参数:将提取到的邮箱地址作为参数传给sendEmail函数。
  3. 修改sendEmail函数:接收邮箱参数,用它作为收件人地址。

修改后的完整代码

//@OnlyCurrentDoc

function createFormSubmitTrigger() {
  var form = FormApp.getActiveForm();
  var currentTriggers = ScriptApp.getProjectTriggers();
  if(currentTriggers.length > 0)
    return;
  ScriptApp.newTrigger("onFormSubmit").forForm(form).onFormSubmit().create();
}

function onFormSubmit(e) {
  var formResponse = e.response;
  var itemResponses = formResponse.getItemResponses();
  var emailBody = "New form response:\n\n";
  var userEmail = "";

  // 遍历响应,收集内容并提取邮箱
  itemResponses.forEach(function(itemResponse) {
    var title = itemResponse.getItem().getTitle();
    var response = itemResponse.getResponse();
    emailBody += title + "\n" + response + "\n\n";

    // 方式1:通过题目名称匹配(替换成你表单中邮箱题目的实际标题)
    if(title === "邮箱地址") {
      userEmail = response;
    }

    // 方式2:通过表单项类型匹配(更可靠,无需依赖标题)
    // if(itemResponse.getItem().getType() === FormApp.ItemType.EMAIL) {
    //   userEmail = response;
    // }
  });

  // 确保获取到邮箱后再发送
  if(userEmail) {
    sendEmail(userEmail, emailBody);
  }
}

function sendEmail(recipientEmail, emailBody) {
  MailApp.sendEmail(recipientEmail, "New form response", emailBody);
}

注意事项

  • 匹配邮箱项:如果用方式1,需要将"邮箱地址"替换成你表单中邮箱题目的实际标题;方式2会自动识别所有邮箱类型的表单项,优先推荐这种方式,避免标题修改导致失效。
  • 重新部署触发器:如果之前已经创建过触发器,建议先删除旧触发器,再重新运行createFormSubmitTrigger函数创建新的触发器。
  • 权限验证:首次运行脚本时,需要授权Google Apps Script访问表单和发送邮件的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:40:37