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

