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

Google Apps Script如何通过点击链接或弹窗触发每行发送单封邮件?

Google Sheets 行级触发邮件发送实现建议

你现有测试代码可参考如下调整适配业务逻辑:

function sendConfirmationEmail(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = e.range;
  var row = range.getRow();
  // 仅触发F列勾选操作的行
  if(range.getColumn() === 6 && e.value === "TRUE") {
    var rowData = sheet.getRange(row, 1, 1, 5).getValues()[0];
    // 以下新增模板替换、发信逻辑
    var templateDoc = DocumentApp.openById('你的模板文档ID');
    var templateBody = templateDoc.getBody();
    // 按你的实际占位符替换即可
    templateBody.replaceText('{{姓名}}', rowData[0]);
    templateBody.replaceText('{{通知内容}}', rowData[2]);
    var emailContent = templateBody.getText();
    // 发信,rowData[4]对应E列的邮件地址
    GmailApp.sendEmail(rowData[4], '通知主题', emailContent);
    // 发信完成后重置勾选框状态,避免重复触发
    range.setValue(false);
  }
}

两个方案的实现技巧

方案A:F列设置触发入口

  • 推荐用勾选框作为触发入口:选中F列需要生效的行,点击「数据→数据验证→条件→勾选框」完成设置,之后给脚本新增可安装的onEdit触发器,绑定sendConfirmationEmail函数,触发条件设置为「修改电子表格时」即可。这种方式可以精准识别当前操作的行,不需要额外传参,适配行级发信的需求。
  • 不要用插入绘图按钮的方式实现,这类全局按钮无法直接获取当前点击的行号,适配行级发信的开发成本更高。

方案B:借助E列原生发信按钮填充模板

  • 谷歌表格原生的悬停发信按钮没有开放自定义接口,无法直接绑定模板填充逻辑,只能用变通方案实现:新增onSelectionChange触发器,当选中E列的邮件单元格时,自动执行模板占位符替换逻辑,把生成好的邮件内容写入剪切板,你点击原生发信按钮后直接粘贴即可。
  • 也可以在选中E列单元格时自动弹出自定义侧边栏,展示渲染好的邮件内容,你点击侧边栏的确认按钮直接调用Gmail接口发信,不需要调用原生发信按钮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:45:03