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

如何让Google表单仅对新提交发自动邮件并自定义发件人?

问题解决方案

一、让脚本仅在新表单提交时执行

要避免编辑响应时触发邮件,核心是判断当前触发事件对应的是新提交的响应还是编辑后的响应。最直接的方式是检查触发行是否为表格的最后一行——新提交的响应会添加到表格末尾,而编辑响应只会修改已有行。

修改后的脚本如下:

function sendFormEmails(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 判断当前触发的行是否是表格的最后一行(新提交)
  if (e.range.getRow() !== sheet.getLastRow()) {
    return; // 不是新提交,直接退出函数
  }

  var emailAddress = e.values[4];
  var subject = "自定义邮件主题";
  var message = "<p>这是自定义的HTML邮件内容</p>";
  var fromAddress = "fromemail@emaildomain.com";
  var ccAddress = "ccemail@emaildomain.com";
  
  MailApp.sendEmail(emailAddress, subject, message, {
    htmlBody: message,
    from: fromAddress,
    cc: ccAddress
  });
}

补充说明:如果表单响应表格存在手动添加的行,上述方法可能失效。此时可改用对比响应的创建时间与表格行的时间戳单元格值:通过e.response.getTimestamp()获取提交时间,若与表格中对应行的时间戳一致,则为新提交,否则为编辑后的响应。

二、自定义发件人地址的实现限制

Google Apps Script的MailApp.sendEmail方法对自定义发件人有严格限制:

  • 个人谷歌账号:仅能使用脚本绑定的谷歌账号本身,或该账号已添加的邮箱别名作为发件人,无法设置完全无关的第三方邮箱地址。
  • 谷歌工作区(Google Workspace)账号:管理员可在后台配置允许的发件人地址范围,此时可使用同一域名下的其他邮箱作为发件人,前提是管理员已开启相关权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:22:48