首页 > 解决方案 > 在满足“IF”条件后仅运行一次谷歌应用脚​​本,每月一次

问题描述

我在 Google 表格中有以下代码,当每月家庭预算余额低于每月预算总额的 10% 时,我会向自己发送一封电子邮件,这是通过每天运行一次的时间驱动触发器来检查的。我现在想做的是每月只运行一次,但每个月都运行一次,即当 11 月份满足“IF”标准(每月预算余额低于 10%)时,11 月份不再运行,但会在 12 月“重置”并在 12 月的每月预算低于 10% 时运行。仅供参考,如果有帮助,“预算”表中单元格 A7 和 A8 中的值会通过表中的公式而不是脚本自动更新为当前月份的值。

感谢您的帮助,如果有什么我可以澄清的,请告诉我!

function FinalBudget() {
  // Fetch the current budget figure
  var monthBudgetPercentRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Budget').getRange("A7"); 
  var monthBudgetPercent = monthBudgetPercentRange.getValue();
  var monthBudgetValueRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Budget').getRange("A8"); 
  var monthBudgetValue = monthBudgetValueRange.getValue();
  var doIt = true;
  // Checks amount of non-fixed budget spent percentage
  if (monthBudgetPercent < 0.1) {
    // Sends an email when non-fixed budget spent is less than 10%, gives percent & euro amount remaining in subject line  
    var recipientsTO = "email1@gmail.com";
    var recipientsCC = "email2@gmail.com";
    var Subject = "We have "+monthBudgetPercent*100+"% / "+monthBudgetValue+" € left of our non-fixed budget remaining for this month";
    var message = "Check budget sheet.";
    var html = message;

  MailApp.sendEmail({
    to: recipientsTO,
    cc: recipientsCC,
    subject: Subject,
    htmlBody: html
  });
 }
}

标签: google-apps-scriptgoogle-sheets

解决方案


  1. 保存上次发送电子邮件的时间。(我会使用Properties 服务。)
  2. 检查当前日期是否与上次发送的电子邮件在同一个月内。
  3. 如果不同月份,请发送电子邮件并更新上次发送电子邮件的日期。
  4. 使用时间驱动的触发器定期检查您的预算——我猜是每天。(触发频率应与数据更新频率相似。)

推荐阅读