寻求Google Sheets特定列单元格变更的邮件/Slack通知代码方案
Google Sheets 特定列变更通知脚本(支持Gmail/Slack)
先修正原脚本的核心问题
原脚本的函数名拼写错误:onSpeEdit 应该改为 onEdit,这是Google Sheets简单触发器的标准函数名,否则无法自动触发。
一、优化后的Gmail通知版本
这个版本修复了触发问题,同时处理了单元格新增内容(无旧值)的场景,避免通知内容出现null:
function onEdit(e) { // 配置参数 const TARGET_SHEET_NAME = 'mySheet'; // 目标工作表名称 const TARGET_COLUMN = 1; // 目标列(A列=1,B列=2,以此类推) const RECIPIENT_EMAIL = 'yourEmail@gmail.com'; // 接收通知的邮箱 // 获取触发事件的上下文信息 const activeSheet = e.source.getActiveSheet(); const activeRange = e.range; // 判断是否是目标工作表和目标列的变更 if (activeSheet.getName() !== TARGET_SHEET_NAME || activeRange.getColumn() !== TARGET_COLUMN) { return; // 不符合条件直接退出 } // 处理旧值为空的情况(比如新增内容) const oldValue = e.oldValue || '无'; const newValue = e.value || '空值'; // 发送邮件通知 MailApp.sendEmail( RECIPIENT_EMAIL, 'Google Sheets 内容变更通知', `变更位置:${activeRange.getA1Notation()} 旧值:${oldValue} 新值:${newValue}` ); }
二、Slack通知版本
如果需要发送到Slack,需要先在Slack工作区创建一个传入Webhook(在Slack Apps里搜索Incoming Webhooks,按指引生成专属URL),然后使用以下脚本:
注意:Slack API调用需要网络权限,简单触发器
onEdit无法满足,需要创建可安装触发器:在脚本编辑器中点击「编辑」→「当前项目的触发器」→ 添加触发器,选择函数onSlackEdit,事件类型选「从电子表格提交」→「编辑时」。
function onSlackEdit(e) { // 配置参数 const TARGET_SHEET_NAME = 'mySheet'; const TARGET_COLUMN = 1; const SLACK_WEBHOOK_URL = 'https://hooks.slack.com/services/XXX/XXX/XXX'; // 替换为你的Slack Webhook URL const activeSheet = e.source.getActiveSheet(); const activeRange = e.range; if (activeSheet.getName() !== TARGET_SHEET_NAME || activeRange.getColumn() !== TARGET_COLUMN) { return; } const oldValue = e.oldValue || '无'; const newValue = e.value || '空值'; const changeLocation = activeRange.getA1Notation(); // 构造Slack消息内容 const payload = { text: `⚠️ Google Sheets 内容变更通知\n> 工作表:${TARGET_SHEET_NAME}\n> 位置:${changeLocation}\n> 旧值:${oldValue}\n> 新值:${newValue}` }; // 发送请求到Slack UrlFetchApp.fetch(SLACK_WEBHOOK_URL, { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload) }); }
使用说明
- 打开你的Google Sheets,点击「扩展程序」→「Apps脚本」,粘贴对应版本的代码
- 修改代码中的配置参数(工作表名称、目标列、邮箱/Slack Webhook URL)
- 如果是Slack版本,记得创建可安装触发器
- 测试:在目标列修改单元格内容,检查是否收到通知
内容的提问来源于stack exchange,提问作者Naiara Caracciolo
相关产品推荐
相关产品推荐

