Google Sheets AppsScript需求:特定单元格变为FALSE时发送邮件
解决Google表格F2单元格从TRUE变FALSE时发送邮件提醒的问题
没问题,我帮你搞定这个需求!因为F2是带IF函数的动态单元格,直接用简单的触发器没法精准捕捉状态变化,我们需要记录上一次的状态来做对比,下面是完整的实现步骤:
1. 编写Apps Script代码
打开你的Google表格,点击顶部菜单栏的「扩展」→「Apps脚本」,把默认代码删掉,粘贴下面的代码:
function checkF2Status() { // 获取目标工作表 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("HealthMon"); if (!sheet) { console.log("找不到名为HealthMon的工作表,请检查工作表名称是否正确"); return; } // 获取F2单元格的当前布尔值(IF函数返回的就是TRUE/FALSE,直接取值即可) const currentStatus = sheet.getRange("F2").getValue(); // 从脚本属性中获取上一次记录的状态,首次运行默认设为TRUE const scriptProps = PropertiesService.getScriptProperties(); const previousStatus = scriptProps.getProperty("f2LastStatus") === "true"; // 核心判断:当前状态是FALSE,且上一次是TRUE(也就是发生了从TRUE到FALSE的变化) if (!currentStatus && previousStatus) { // 配置邮件信息,替换成你的收件邮箱 const recipient = "your-email@example.com"; const subject = "HealthMon表格状态提醒:F2已从TRUE变为FALSE"; const body = ` 您好, 您的Google表格「HealthMon」工作表中的F2单元格,已从TRUE状态变为FALSE状态,请留意! `; // 发送邮件 MailApp.sendEmail(recipient, subject, body); console.log("状态变化邮件已成功发送"); } // 更新脚本属性中的状态记录,把当前值存进去 scriptProps.setProperty("f2LastStatus", String(currentStatus)); }
2. 设置触发器(关键步骤)
代码写完后,我们需要设置一个触发器,让脚本在表格有变化时自动运行:
- 在Apps Script界面左侧,点击时钟形状的「触发器」图标
- 点击右下角的「添加触发器」,按以下配置:
- 选择要运行的函数:
checkF2Status - 选择事件源:「从电子表格」
- 选择事件类型:「更改时」
- 选择要运行的函数:
- 点击保存,此时会弹出授权窗口,按提示完成授权(需要允许脚本访问你的表格和邮箱)
3. 注意事项
- 首次运行脚本时,因为之前没有记录状态,默认会把上一次状态设为TRUE,所以如果当前F2是FALSE,首次运行不会发邮件,只有当它从TRUE变成FALSE时才会触发
- 确保你的Google账号允许发送邮件(个人账号默认都支持,企业账号可能需要管理员授权)
- 如果修改了工作表名称,记得同步修改代码里的
"HealthMon"
内容的提问来源于stack exchange,提问作者snowblind
相关产品推荐
相关产品推荐

