You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets AppScript:每日检测条件但每周仅发一次告警邮件

实现每日检测+每周仅发一次告警邮件的方案

这个需求完全可行,核心思路是记录上次发送告警的时间,通过判断时间间隔来控制邮件发送频率,同时保留每日检测的逻辑。下面是具体实现方案:

实现步骤

  • 用PropertiesService存储上次发送邮件的日期(脚本级持久化存储,不会随脚本运行结束丢失)
  • 每日触发脚本时,先判断单元格条件是否满足
  • 若条件满足,检查距离上次发送是否已过7天,是则发送邮件并更新发送时间
  • 若条件不满足,重置存储的发送时间(确保下次条件满足时重新计时)

修改后的完整代码

function CheckSessions() {
  // 获取目标工作表
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const billingSheet = ss.getSheetByName("Billing");
  
  // 获取单元格值和邮箱地址
  const sessions = billingSheet.getRange("K1").getValue();
  const emailAddress = billingSheet.getRange("H2").getValue();
  
  // 获取脚本属性存储(用来记录上次发送时间)
  const scriptProps = PropertiesService.getScriptProperties();
  const lastSentDateStr = scriptProps.getProperty("lastAlertSentDate");
  const today = new Date();
  
  // 条件判断:单元格值满足,且满足发送间隔(或从未发送过)
  if (sessions === 1) {
    let shouldSend = false;
    
    if (!lastSentDateStr) {
      // 从未发送过,直接发送
      shouldSend = true;
    } else {
      // 计算上次发送至今的天数
      const lastSentDate = new Date(lastSentDateStr);
      const daysDiff = Math.floor((today - lastSentDate) / (1000 * 60 * 60 * 24));
      
      // 间隔超过7天则发送
      if (daysDiff >= 7) {
        shouldSend = true;
      }
    }
    
    if (shouldSend) {
      // 发送告警邮件
      const message = 'This is your Alert email!';
      const subject = 'Your Google Spreadsheet Alert';
      MailApp.sendEmail(emailAddress, subject, message);
      
      // 更新上次发送日期为今天
      scriptProps.setProperty("lastAlertSentDate", today.toISOString());
    }
  } else {
    // 条件不满足时,重置发送记录,确保下次条件满足时重新计时
    scriptProps.deleteProperty("lastAlertSentDate");
  }
}

关键逻辑说明

  1. 持久化存储:PropertiesService.getScriptProperties()用来保存上次发送邮件的日期,即使脚本重启或触发器多次运行,数据也不会丢失
  2. 时间间隔计算:通过计算当前日期与上次发送日期的毫秒差,转换为天数,判断是否达到7天的发送间隔
  3. 重置逻辑:当单元格条件不再满足时,删除存储的发送记录,这样下次条件满足时会重新开始计算7天间隔,避免出现条件恢复后仍需要等待剩余天数的问题

触发器设置

将脚本设置为每日触发(比如每天固定时间运行一次),无需保留原有的每周触发器。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:10:26