【问题标题】:Google Sheets: App Script auto send email when date is within 90 daysGoogle 表格:应用脚本在日期在 90 天内自动发送电子邮件
【发布时间】:2022-11-11 00:21:30
【问题描述】:

我正在寻求帮助为 GOOGLESHEET 编写 APPS SCRIPT 每天使用基于时间的触发器(每天)而不是在编辑或打开触发器时发送提醒电子邮件。

该表的 a 栏中有工作人员的姓名。他们的主管在 b 栏中。以及他们需要在 c 栏中重新认证其执照的日期。

a b c 员工 主管 日期 我需要一个脚本来向 A 栏中的工作人员发送一封电子邮件,该人员的重新认证日期(C 栏)在 90 天内。我知道在电子邮件中添加一个额外的列会更容易,而且这个选项对我来说也很好。

我还需要这个脚本每天在时间触发器上生成。例如,每天脚本在特定时间被激活。

几天来一直在处理这个脚本,但收效甚微,因此我们将不胜感激。

【问题讨论】:

  • 欢迎来到Stack Overflow。请按照How to Ask 中的建议,展示您尝试过的内容并添加对搜索工作的简要描述。

标签: javascript google-apps-script google-sheets


【解决方案1】:

如果日期在 90 天内,则发送第 3 栏

function sendEmail() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet0");
  const vs = sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).getValues();
  const dt = new Date();
  const dtv1 = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() - 90).valueOf();//the earliest date to receive an email
  const dtv2 = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate() + 90).valueOf();//the latest date to receive an email
  vs.forEach(([n, b, d, e, s], i) => {
    let dv = new Date(d).valueOf()
    if (dv > dtv1 && dv < dtv2 && s != "Sent") {
      GmailApp.sendEmail(e, "Subject", "Message");
      sh.getRange(i + 2, 5).setValue("Sent");
    }
  });
}

电子表格标题

Name Supervisor Date Email Sent

【讨论】:

  • 这或多或少是我一直在尝试的代码。它的问题是它向列中日期超过 90 天的人发送电子邮件。在一些他们应该发送电子邮件的行上,他们不是。所以它非常混乱和随机
  • 今天是11月10日。应在 90 天内发送电子邮件的日期是什么?
猜你喜欢
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 2020-04-14
相关资源
最近更新 更多