在Google App脚本中获取今天的日期

时间:2019-06-07 09:55:58

标签: date google-apps-script

我试图将“今天的日期”作为变量,以便能够比较自从电子表格中注册日期以来的情况。

但是我尝试过语法:

var now = new Date();

但是它返回

  

1899年12月31日。

我该如何解决?

function onEdit(event) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var s = event.source.getActiveSheet();
      var r = event.source.getActiveRange();
      var now = new Date();


      if(r.getColumn() == 1 && r.getValue() <= (now -10)) {
        var row = r.getRow();
        var numColumns = s.getLastColumn();
        s.getRange(row, 1, 1, numColumns).setBackgroundColor('#DBFF33');
        ss.getRange('B3').setValue(now);
      }

      else {
      }
    }

1 个答案:

答案 0 :(得分:0)

Google Apps脚本日期对象与核心JavaScript日期对象相似,但略有不同。 reference会详细介绍。

Date Math部分中,他们建议使用date.getTime()函数计算日期,并加上或减去毫秒,并显式创建一个新日期:

var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
var checkDate = new Date(now.getTime() - (MILLIS_PER_DAY * 10); 

从Date对象中减去10似乎只是将其转换为整数,并且不再将其识别为日期。

因此,要检查日期是否超过10天,您应该执行以下操作:

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  var now = new Date();

  var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
  var checkDate = new Date(now.getTime() - (MILLIS_PER_DAY * 10));

  if (r.getColumn() == 1 && r.getValue() <= checkDate) {

    var row = r.getRow();
    var numColumns = s.getLastColumn();
    s.getRange(row, 1, 1, numColumns).setBackgroundColor('#DBFF33');
    ss.getRange('B3').setValue(now);
  } else {

  }
}