gpt4 book ai didi

email - 根据日期发送提醒邮件

转载 作者:行者123 更新时间:2023-12-02 01:32:10 24 4
gpt4 key购买 nike

我正在使用以下脚本从 Google 表格发送电子邮件提醒,但我想对其进行修改,以便它在每一行的单元格 F 中指定的日期发送电子邮件。

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails2() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 999; // Number of rows to process
// Fetch the range of cells A2:B999
var dataRange = sheet.getRange(startRow, 1, numRows, 999)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var subject = row[1]; // Second column
var message = row[2]; // Third column
var emailSent = row[3];

if (emailSent != EMAIL_SENT) { // Prevents sending duplicates

MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 4).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}

这就是我所拥有的,任何在其中添加日期的尝试都以失败告终。

我遇到了这个较早的问题:Google Apps Script - Send Email based on date in cell但无法将它与我的脚本结合起来。

最佳答案

Serge 在that previous answer 中提供的解决方案为您准备一个非常灵活的脚本,能够使用日期/时间的任何部分作为发送标准。

这是一种更简单且不太灵活的方法。假设:

  • 电子表格中的日期是日期,而不是字符串。
  • 我们只关心日期匹配;小时、分钟和秒是无关紧要的。
  • 电子表格中的脚本和提醒日期基于相同的时区。

这里的魔力在于比较日期。 JavaScript Date object是从 1970 年开始耗时的数字表示,通用时间。那么比较日期的相等性是很困难的。但是,由于上面的假设,我们只关心日期,这很有帮助。为了解决时区问题并消除小时、分钟等的影响,我们只使用相同的 Date 方法从我们要比较的日期对象生成日期字符串。 toLocaleDateString() 方法为我们调整时区。

结果脚本:

var EMAIL_SENT = "EMAIL_SENT";

function sendEmails3() {
var today = new Date().toLocaleDateString(); // Today's date, without time

var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 999; // Number of rows to process
// Fetch the range of cells A2:B999
var dataRange = sheet.getRange(startRow, 1, numRows, 999)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var emailAddress = row[0]; // First column
var subject = row[1]; // Second column
var message = row[2]; // Third column
var emailSent = row[3];
var reminderDate = row[5].toLocaleDateString(); // date specified in cell F

if (reminderDate != today) // Skip this reminder if not for today
continue;

if (emailSent != EMAIL_SENT) { // Prevents sending duplicates

MailApp.sendEmail(emailAddress, subject, message);
sheet.getRange(startRow + i, 4).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}

关于email - 根据日期发送提醒邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33499410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com