google-apps-script - 在满足“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
});
}
}
解决方案
- 保存上次发送电子邮件的时间。(我会使用Properties 服务。)
- 检查当前日期是否与上次发送的电子邮件在同一个月内。
- 如果不同月份,请发送电子邮件并更新上次发送电子邮件的日期。
- 使用时间驱动的触发器定期检查您的预算——我猜是每天。(触发频率应与数据更新频率相似。)
推荐阅读
- python - ("由于模型数据错误,无法加载模型。标签:['serve']\n在定义的操作中没有名为 HashTableV2 的操作。", 1)
- java -
antlr4 不匹配 - c++ - 如何将 i386 代码片段链接到 x86_64 精灵?
- c++ - C++ 检查十六进制是否由 ABCDEF1 或 0 组成
- mysql - 带有AUTO_INCREMENT主键的Mysql主从复制
- facebook - facebook 中的画布和顶部导航栏
- c# - 适合 TLS 1.2 的密码
- vba - VBA 将复选框包含到用户表单中,根据表值选中/取消选中
- javascript - 打开自定义创建的 .ics 文件时,Iphone 中 safari 的奇怪行为
- ruby-on-rails - 带有关联 has_many -> belongs_to 的 Ruby 未定义方法“错误”