javascript - Google-apps-script 日期比较。无法比较该月的第一天。获取月份()

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

编辑:没有错误。不知何故,谷歌脚本中的项目设置被设置为错误的时区。啊...: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

Image of part of sheet

最佳答案

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/

相关文章:

javascript - react : Use setState in a function called from another component?

javascript - PHP echo cookie to console.log 在源代码中正确写入,但在控制台中不正确

sql - 在没有循环的情况下在 SQL 中添加迄今为止的工作日

javascript - Google 电子表格中的排列/组合

javascript - GAS - onChange 触发器(从事件工作表获取值)并写入另一个电子表格

javascript - 使用 Javascript 在移动 View 中滚动时按钮固定到页面

javascript - 显示基于单选按钮的 HTML 代码的特定部分?

javascript - 将 GMT 日期解析为 UTC 日期

javascript - 质量 JavaScript : date-triggered logic

javascript - 自定义类的服务器端 onchange 事件