gpt4 book ai didi

javascript - 如何比较日期以确保 Google Apps 脚本每天仅发送一次提醒?

转载 作者:行者123 更新时间:2023-12-01 00:49:45 25 4
gpt4 key购买 nike

我在 Google 表格中有一个脚本,如果满足特定条件,它会发出警报。我想触发脚本每小时运行一次,但是,如果今天已经发出警报,我不想再发出一个警报(仅在第二天)。实现这一目标的最佳方法是什么?

我尝试过多种方式格式化日期,但到目前为止,唯一对我有用的方法是从日期对象中获取年、月和日作为 int 并分别进行比较。

function sendAlert{

var now = new Date();
var yearNow = now.getYear();
var monthNow = now.getMonth() + 1;
var dayNow = now.getDate();
var sheet = SpreadsheetApp.getActive().getSheetByName('CHANGE_ALERT');
var sentYear = sheet.getRange("R2").getValue();
var sentMonth = sheet.getRange("S2").getValue();
var sentDay = sheet.getRange("T2").getValue();

if (yearNow != sentYear || monthNow != sentMonth || dayNow != sentDay) {

sendEmail();
var sentYear = sheet.getRange("R2").setValue(yearNow);
var sentMonth = sheet.getRange("S2").setValue(monthNow);
var sentDay = sheet.getRange("T2").setValue(dayNow);

else {

Logger.log('Alert was already sent today.');
}
}

我认为这个解决方案绝对不是最好的方法,但我无法想出另一种将日期合并为一个的方法。仅比较 new Date() 是行不通的,因为一天中的时间不一定相同。如果我将日期格式设置为 YYYY-MM-dd,它应该可以工作,但是当我再次从电子表格中获取日期时,它会再次将其作为带有时间的完整日期。

最佳答案

要求:

比较日期并发送电子邮件(如果今天尚未发送)。

<小时/>

修改后的代码:

function sendAlert() {

var sheet = SpreadsheetApp.getActive().getSheetByName('blank');
var cell = sheet.getRange(2,18); //cell R2
var date = new Date();
var alertDate = Utilities.formatDate(cell.getValue(), "GMT+0", "yyyy-MM-dd");
var currentDate = Utilities.formatDate(date, "GMT+0", "yyyy-MM-dd");

if (alertDate !== currentDate) {

sendEmail();
cell.setValue(date);

} else {

Logger.log('Alert was already sent today.');
}
}

如您所见,我删除了所有年/月/日代码,并将其替换为 Utilities.formatDate(),这使您可以按照您指定的格式比较日期在你的问题中。我还更改了 if 语句以匹配此内容,因此现在我们只需比较 alertDatecurrentDate

<小时/>

引用文献:

关于javascript - 如何比较日期以确保 Google Apps 脚本每天仅发送一次提醒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57089391/

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