如何修改Google Apps Script实现逾期3天后每日发送未审核提醒邮件
实现Google Sheets每日提醒邮件直到审核完成
我明白你的需求——你需要从提交后的第3天开始,每天给未审核的条目发送提醒邮件,直到A列被勾选为TRUE。你的现有脚本只在第3天触发一次,问题出在日期判断的逻辑上,我们来修改它:
修改后的完整脚本
function sendDailyReminderEmail() { var sheet = SpreadsheetApp.getActiveSheet(); var startRow = 2; // 数据起始行 var numRows = 1000; // 处理的行数 var numOfColumns = sheet.getLastColumn(); var dataRange = sheet.getRange(startRow, 1, numRows, numOfColumns); var data = dataRange.getValues(); var today = new Date(); // 转换为当天0点的时间戳,避免时分秒干扰日期计算 var todayTimestamp = new Date(today.getFullYear(), today.getMonth(), today.getDate()).valueOf(); var oneDayMs = 24 * 60 * 60 * 1000; // 一天的毫秒数 for (var i = 0; i < data.length; i++) { var row = data[i]; var isReviewed = row[0]; // A列的审核状态 var submitDate = new Date(row[21]); // V列的提交时间戳 var submitDateTimestamp = new Date(submitDate.getFullYear(), submitDate.getMonth(), submitDate.getDate()).valueOf(); var daysDiff = Math.floor((todayTimestamp - submitDateTimestamp) / oneDayMs); // 判断条件:未审核,且提交时间已超过(含)3天 if (!isReviewed && daysDiff >= 3) { var reportNumber = row[20]; // U列的报告编号 var emailAddress = row[22]; // W列的邮箱地址 var ssLink = row[23]; // X列的表格链接 var subject = "Your attention is needed on Bullying Report Number " + reportNumber; var message = `Report #${reportNumber} on the Bully Report Spreadsheet has not been reviewed in ${daysDiff} days. Please review the issue and indicate its status once addressed. ${ssLink}`; MailApp.sendEmail(emailAddress, subject, message); } } }
关键改动说明
- 日期判断逻辑优化:原来的代码只判断提交日期正好是3天前,现在计算提交日期到今天的天数差,只要差≥3天且未审核,就发送邮件
- 动态显示逾期天数:邮件内容里的天数从固定的3天改成实际的
daysDiff,让收件人清楚知道逾期了多久 - 变量命名更清晰:把原代码里的
dt、dv改成更易懂的today、todayTimestamp,提升代码可读性和维护性
最后一步:设置每日定时触发器
要实现每天自动发送提醒,你需要给这个脚本设置一个每日触发器:
- 在Google Sheets的脚本编辑器中,点击左侧的「触发器」图标(闹钟样式)
- 点击「添加触发器」
- 设置选项:
- 选择要运行的函数:
sendDailyReminderEmail - 选择事件源:「时间驱动」
- 选择时间类型:「日计时器」
- 选择一天中的时段(比如上午9点,适合工作时间发送)
- 选择要运行的函数:
- 保存触发器,之后脚本就会每天自动运行,发送未审核条目的提醒邮件
内容的提问来源于stack exchange,提问作者THRILLHOUSE
相关产品推荐
相关产品推荐

