Google Apps脚本 - 如果日期=今天,则突出显示行

时间:2017-03-13 21:59:39

标签: date google-apps-script dst

我有一个包含手动设置日期的单元格。如果这个日期=今天,我想突出显示整行。我以为我的工作很好,但是Daylight Savings Time在我的日期比较中引起了巨大的反响。有人可以帮忙吗?

现在,如果我的单元格包含“2017年3月15日”,则脚本会告诉我日期等于“2017年3月14日”。我知道因为DST而需要一个小时,但我不知道如何在比较我的日期时解决这个问题。现有代码如下。

function highlightRow (selectionRow) {

  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getSheetByName("Test Sheet");
  var dateToFlag = sheet.getRange(selectionRow,27).getValue();
  var today = new Date();
    today.setHours(0,0,0,0);

    if (dateToFlag !== "" && dateToFlag == today) {
      sheet.getRange(selectionRow,1,1,50).setBackgroundColor('yellow');
    }

}

2 个答案:

答案 0 :(得分:1)

现在,这似乎可以通过稍微格式化日期来实现。我修改了一些代码以使其在我的编辑器中工作。问题是一个包含时间而另一个没有。

function highlightRow () {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheet = ss.getActiveSheet();
  var dateToFlagS = sheet.getRange(1,1).getValue();
  var dateToFlag = Utilities.formatDate(new Date(dateToFlagS), "GMT-6", "MM/dd/yyyy");
  var today = Utilities.formatDate(new Date(), "GMT-6", "MM/dd/yyyy");
    if (dateToFlag !== "" && dateToFlag == today) 
    {
      sheet.getRange(1,1,1,50).setBackgroundColor('yellow');
    }
}

答案 1 :(得分:0)

Google表格中存储的任何日期实际上都存储自Epoch以来的时间(以毫秒为单位)。如果您只关心日期并且不关心时间,那么将时间设置为该日期的零小时是明智的。这将使日期比较逻辑正常工作。