如果今天 = date_in_cell(或今天的迭代 + X)- Google 应用 / Javascript

If today = date_in_cell (or iteration of today + X) - Google Apps / Javascript

我想每隔 X 天(单元格中的日期之后)发送电子邮件提醒,直到用户更改行中的状态。

一次性日期条件很简单 EG:

If date = today OR date = today + 2 OR date = today + 4

在我的 "settings" sheet 上,我有一个 "frequency" 设置,其中设置了电子邮件提醒之间的天数。

是否可以在 if 语句中放置一个循环?例如:

If today = date_in_cell OR today = date_in_cell + any multiple of X

IE - 单元格中的日期是星期一。我想要周三、周五、周日、周二、周四等(永远)的电子邮件。

您正在查找余数运算符 (%)。您计算开始日期和今天之间的天数差异,然后如果它大于 0 并且该数字 % 天数为 0,则需要发送提醒的那一天:

var elapsed = Math.floor((today - dt) / ONE_DAY_IN_MS);
var sendEmail = elapsed > 0 && elapsed % days == 0;

实例:

var ONE_DAY_IN_MS = 1000 * 60 * 60 * 24; // Defined by the spec
function format(dt) {
  var rv = [dt.getFullYear()];
  var n = dt.getMonth()  + 1;
  rv.push(n < 10 ? "0" + n : n);
  var n = dt.getDate();
  rv.push(n < 10 ? "0" + n : n);
  return rv.join("-");
}
function test(dt, today, days) {
  var elapsed = Math.floor((today - dt) / ONE_DAY_IN_MS);
  var sendEmail = elapsed > 0 && elapsed % days == 0;
  console.log(format(dt), format(today), sendEmail ? "Yes" : "No");
}
document.getElementById("btn").addEventListener("click", function() {
  console.clear();
  var dt = new Date(2018, 0, 1); // Jan 1st
  var today = new Date(2018, 0, 1); // Jan 1st
  var days = +document.getElementById("days").value;
  for (var n = 0; n < 10; ++n) {
    today.setDate(today.getDate() + 1);
    test(dt, today, days);
  }
});
<input type="number" id="days" value="2">
<input type="button" id="btn" value="Show">