编辑:没有错误。不知何故,谷歌脚本中的项目设置被设置为错误的时区。啊...:D
我不明白为什么当我从“var SheetDate”中的工作表中收集日期并将其与“var date”进行比较时,每个日期都有效并且电子邮件已发送,从 02.01.2020 到 31.01.2020 但不是 01.01 .2020.
我使用 .getmonth() 进行比较,因此该脚本可以每月运行一次,持续多年。 01.01 有什么特殊之处吗?它不起作用?
function sendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 1; // First row of data to process
var numRows = sheet.getLastRow(); // Number of rows to process
// Fetch the range of cells
var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
// Fetch values for each row in the Range.
var data = dataRange.getValues();
Logger.log(data)
for (var i in data) {
var row = data[i];
var date = new Date();
var sheetDate = new Date(row[18]);
if (date.getMonth() == sheetDate.getMonth()){
var emailAddress = row[19]; // Email
var message = row[1]; // Info
var subject = row[11];
MailApp.sendEmail(emailAddress, subject, message);
Logger.log('SENT :'+emailAddress+' '+subject+' '+message)
}
}
}
编辑:按请求的日志
[20-01-04 15:03:48:762 CET] Sheetdate:Wed Jan 01 2020 18:00:00 GMT-0500 (EST)
[20-01-04 15:03:48:764 CET] Date:Sat Jan 04 2020 09:03:48 GMT-0500 (EST)
[20-01-04 15:03:48:764 CET] date.getMonth():0
[20-01-04 15:03:48:765 CET] sheetdate.getMonth():0
[20-01-04 15:03:48:837 CET] Sheetdate:Tue Jan 03 2023 18:00:00 GMT-0500 (EST)
[20-01-04 15:03:48:838 CET] Date:Sat Jan 04 2020 09:03:48 GMT-0500 (EST)
[20-01-04 15:03:48:839 CET] date.getMonth():0
[20-01-04 15:03:48:839 CET] sheetdate.getMonth():0
[20-01-04 15:03:48:934 CET] Sheetdate:Thu Jan 02 2020 18:00:00 GMT-0500 (EST)
[20-01-04 15:03:48:935 CET] Date:Sat Jan 04 2020 09:03:48 GMT-0500 (EST)
[20-01-04 15:03:48:936 CET] date.getMonth():0
[20-01-04 15:03:48:936 CET] sheetdate.getMonth():0
[20-01-04 15:03:48:998 CET] Sheetdate:Fri Jan 31 2020 18:00:00 GMT-0500 (EST)
[20-01-04 15:03:48:999 CET] Date:Sat Jan 04 2020 09:03:48 GMT-0500 (EST)
[20-01-04 15:03:48:999 CET] date.getMonth():0
[20-01-04 15:03:49:000 CET] sheetdate.getMonth():0
最佳答案
function sendEmail() {
var sh=SpreadsheetApp.getActive();
var rg=sh.getRange(1, 1, sh.getLastRow(), sh.getLastColumn());
var data=rg.getValues();
for(var i=0;i<data.length;i++) {
var toda=new Date().valueOf();
var dt=new Date(data[i][18]);
var s=new Date(dt.getFullYear(),dt.getMonth(),1).valueOf();//beginning of month
var e=new Date(dt.getFullYear(),dt.getMonth()+1,0).valueOf();//end of month
if (toda>=s && toda<=e){
var emailAddress=data[i][19];
var message=data[i][1];
var subject=data[i][11];
MailApp.sendEmail(emailAddress, subject, message);
Logger.log('SENT :'+emailAddress+' '+subject+' '+message)
}
}
}
关于javascript - Google-apps-script 日期比较。无法比较该月的第一天。获取月份(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59577725/