如何在Google Sheets中设置单元格未更新或逾期未填写告警?
解决方案:Google Sheets 过期未更新主动告警实现
核心思路
用Google Apps Script编写检查逻辑,搭配时间驱动触发器实现后台自动巡检,无需打开Sheet就能触发告警,主动给团队推送提醒。
步骤1:编写检查脚本
- 打开目标Google Sheets,点击顶部菜单栏「扩展程序」→「Apps Script」进入脚本编辑器。
- 替换默认代码为以下内容,根据你的实际需求修改变量值:
function checkExpiredAndUnfilled() { // 配置参数,按需修改 const SPREADSHEET_ID = "你的表格ID"; // 表格URL里的ID部分 const SHEET_NAME = "Sheet Y"; // 要检查的Sheet名称 const DATE_CELL = "A1"; // 存放截止日期的单元格位置 const TARGET_CELL = "B1"; // 需要检查是否空白的目标单元格位置 const ALERT_EMAILS = ["team@example.com", "member1@example.com"]; // 告警收件人邮箱 // 获取表格和Sheet对象 const ss = SpreadsheetApp.openById(SPREADSHEET_ID); const sheet = ss.getSheetByName(SHEET_NAME); // 读取单元格数据 const targetDate = sheet.getRange(DATE_CELL).getValue(); const targetValue = sheet.getRange(TARGET_CELL).getValue(); // 重置时间为凌晨,避免时分秒干扰判断 const today = new Date(); today.setHours(0, 0, 0, 0); targetDate.setHours(0, 0, 0, 0); // 检查条件:日期已过期 且 目标单元格为空 if (targetDate < today && targetValue === "") { const formattedDate = Utilities.formatDate(targetDate, Session.getScriptTimeZone(), "MM/dd/yyyy"); const subject = `告警:Sheet ${SHEET_NAME} 未按时更新`; const body = `截至 ${formattedDate},Sheet ${SHEET_NAME} 的目标单元格(${TARGET_CELL})仍未填写,请及时处理。`; // 发送告警邮件 MailApp.sendEmail(ALERT_EMAILS.join(","), subject, body); } }
步骤2:设置时间驱动触发器
- 在脚本编辑器左侧点击「触发器」图标(时钟样式)。
- 点击「添加触发器」,配置参数:
- 运行函数:
checkExpiredAndUnfilled - 部署类型:「基于时间的触发器」
- 事件源:「时间驱动」
- 时间类型:「日计时器」
- 触发时段:比如「上午9点到10点」(按团队工作时间调整)
- 运行函数:
- 点击「保存」,授权脚本所需的邮件发送和表格访问权限。
步骤3:测试验证
- 手动把日期单元格改成过去的日期,目标单元格留空,点击脚本编辑器的「运行」按钮,测试是否能收到告警邮件。
- 等到设置的触发时段,确认触发器会自动运行并推送告警(无需打开Sheet)。
内容的提问来源于stack exchange,提问作者Kevin Barrett
相关产品推荐
相关产品推荐

