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

如何修改Google Sheets脚本实现I1单元格变动时邮件通知

问题

我有一个可供多人协作编辑的Google Sheet,其中I1单元格是根据数据录入条件自动更新的数值计数(例如当有人在表格其他区域新增条目时,它会从14变为15)。我希望当该单元格数值变化时能收到邮件通知。找到的示例脚本仅在当前工作表的A列或B列有变动时发送通知,无法修改成符合自身需求的版本。

解决方案

直接使用以下修改后的脚本,配合触发器实现需求:

function sendEmailOnI1Change() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 替换成你存放I1的工作表名称,比如"数据记录表"
  const targetSheet = ss.getSheetByName("Sheet1");
  if (!targetSheet) return;

  // I列对应第9列,获取I1的当前值
  const currentValue = targetSheet.getRange(1, 9).getValue();
  const scriptProps = PropertiesService.getScriptProperties();
  // 首次运行时默认记录为0,后续会自动更新
  const lastRecordedValue = scriptProps.getProperty("lastI1Value") || 0;

  // 只有当数值确实变化时才发邮件
  if (currentValue !== lastRecordedValue) {
    const recipientEmail = "your-email@example.com"; // 替换成你的收件邮箱
    const emailSubject = `I1单元格更新通知 - ${ss.getName()}`;
    const emailBody = `表格《${ss.getName()}》的I1单元格数值已更新:
旧值:${lastRecordedValue}
新值:${currentValue}

点击查看表格:${ss.getUrl()}`;

    MailApp.sendEmail(recipientEmail, emailSubject, emailBody);
    // 更新记录的数值,避免重复触发
    scriptProps.setProperty("lastI1Value", currentValue);
  }
}
配置步骤
  1. 打开你的Google Sheet,点击顶部「扩展程序」→「Apps脚本」
  2. 清空默认代码,粘贴上面的脚本,替换Sheet1和your-email@example.com为实际内容
  3. 点击左侧菜单栏的「触发器」图标(时钟形状),点击「添加触发器」:
    • 选择要运行的函数:sendEmailOnI1Change
    • 选择事件源:「从电子表格」
    • 选择事件类型:「更改」(因为I1是自动计算的,选这个能捕捉到公式更新的变化;如果是手动修改I1,选「编辑」也可以)
  4. 按照提示完成权限授权,保存触发器即可
关键说明
  • 用PropertiesService存储历史值,确保只有I1数值真的变化才发邮件,不会因为表格其他无关修改触发通知
  • 指定固定工作表,避免其他工作表的操作误触发通知
  • 触发器的「更改」事件会在表格数据(包括公式计算结果)变化时触发,正好匹配I1自动更新的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:27:28