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

需求:当Google Sheet中H列单元格值为1时自动发送邮件

解决方案

1. 现有代码的问题

你的代码目前有几个明显问题:

  • 仅检查B2单元格,未覆盖H列所有行
  • 使用字符串"1"做数值比较,应该直接用数字1判断
  • 缺少自动触发机制,单元格值变化时无法自动执行脚本
  • 收件邮箱硬编码,未读取表格中配置的邮箱

2. 修改后的完整代码

// 单元格编辑时自动触发
function onEdit(e) {
  var sheet = e.source.getSheetByName("Sheet 1");
  // 仅处理H列(第8列)且值变为1的情况
  if (e.range.getColumn() === 8 && e.value == 1) {
    var row = e.range.getRow();
    // 从当前行的A列读取收件邮箱(可根据实际配置修改列号,比如C列改成3)
    var recipient = sheet.getRange(row, 1).getValue();
    // 用I列(第9列)记录发送状态,避免重复发送
    var sentStatus = sheet.getRange(row, 9).getValue();
    if (recipient && sentStatus !== "已发送") {
      sendEmail(recipient, row);
      // 标记已发送
      sheet.getRange(row, 9).setValue("已发送");
    }
  }
}

function sendEmail(recipient, row) {
  var subject = `表格行${row}触发通知`;
  var body = `Sheet1第${row}行的H列值已变为1,请留意。`;
  MailApp.sendEmail(recipient, subject, body);
}

3. 使用说明

  • 自动触发:onEdit是Google Apps Script内置的简单触发器,只要编辑表格就会自动执行,无需额外配置
  • 收件邮箱配置:代码默认从触发行的A列读取邮箱,你表格里配置在哪列,就把row,1中的1改成对应列号(比如配置在D列就改成4)
  • 防重复发送:新增的I列会标记"已发送",同一行H列再修改时不会重复发邮件,不需要此功能可删除相关代码
  • H列判断:H列对应第8列,代码中getColumn() === 8确保只处理H列的编辑操作

4. 注意事项

  • 首次使用时,需在脚本编辑器中手动运行一次onEdit,完成邮箱和表格的权限授权
  • 确保Sheet 1与你实际的工作表名称完全一致,否则脚本无法找到目标表格
  • 若需要批量检查历史数据中H列已为1的行,可新增手动执行函数遍历H列所有行判断发送

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:04:56