Google Sheets实现指定单元格首次为X时自动发送邮件通知
Google Sheets 未匹配值首次触发邮件提醒方案
现有流程概述
- 使用
IMPORTHML函数从多个网站抓取数据 - 通过公式
=IF(COUNTIF(A:A, B3), "O", "X")(E3、G3逻辑同理)对比A列自有站点数据,生成O/X标记 - 用条件格式将X标红,快速识别未匹配值
需求目标
仅在C3、E3、G3首次出现X,且对应左侧单元格(B3、D3、F3)是首次抓取到值时发送提醒邮件,避免因X持续存在重复发件。邮件需包含X左侧单元格的数值。
实现方案
1. 新增提醒标记列
在表格空白区域(如H、I、J列)分别对应C3、E3、G3的提醒状态:
- H3对应C3,I3对应E3,J3对应G3
- 初始值留空,触发邮件后标记为
已提醒
2. 编写Google Apps Script脚本
脚本核心逻辑:检查目标单元格是否满足「左侧有值+当前为X+未标记提醒」,满足则发邮件并标记状态。
示例代码:
function checkAndSendAlert() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 配置监控组:[左侧值单元格, X判断单元格, 提醒标记单元格] const monitorGroups = [ ["B3", "C3", "H3"], ["D3", "E3", "I3"], ["F3", "G3", "J3"] ]; const recipient = "你的收件邮箱@xxx.com"; // 替换为实际邮箱 let alertMsg = ""; monitorGroups.forEach(group => { const valueCell = sheet.getRange(group[0]); const checkCell = sheet.getRange(group[1]); const flagCell = sheet.getRange(group[2]); const targetValue = valueCell.getValue(); const checkResult = checkCell.getValue(); const hasAlerted = flagCell.getValue(); // 触发条件:左侧有值 + 未匹配(X) + 未发过提醒 if (targetValue !== "" && checkResult === "X" && hasAlerted === "") { alertMsg += `未匹配值:${targetValue}\n`; flagCell.setValue("已提醒"); // 标记为已发送 } }); // 有内容则发送邮件 if (alertMsg) { MailApp.sendEmail({ to: recipient, subject: "Sheet未匹配值首次提醒", body: "首次检测到以下未匹配自有站点的数据:\n\n" + alertMsg }); } }
3. 设置定时触发器
- 打开脚本编辑器(表格顶部「扩展程序」>「Apps脚本」)
- 点击左侧「触发器」图标,添加新触发器:
- 选择函数:
checkAndSendAlert - 事件源:「时间驱动」
- 类型:根据数据更新频率选择(如「小时计时器」每1小时运行,或「天计时器」固定时段运行)
- 选择函数:
关键说明
- 首次运行脚本需完成权限授权,按照提示操作即可
- 标记列可隐藏,不影响现有表格使用
- 手动验证后若将X改为O,无需修改标记列,标记仅用于判断首次触发
内容的提问来源于stack exchange,提问作者thomas1988
相关产品推荐
相关产品推荐

