【问题标题】:Google Apps Script - If Date = Today, Highlight RowGoogle Apps 脚本 - 如果日期 = 今天,则突出显示行
【发布时间】:2017-08-04 02:13:38
【问题描述】:

我有一个包含手动设置日期的单元格。如果此日期 = 今天,我想突出显示整行。我以为我的工作正常,但夏令时在我的日期比较中投入了巨大的扳手。任何人都可以帮忙吗?

现在,如果我的单元格包含“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');
    }

}

【问题讨论】:

  • 我们不知道sheet.getRange(selectionRow,27) 的值是。添加Logger.log('dateToFlag: ' + dateToFlag) 声明;运行代码并查看日志。然后告诉我们价值是什么。脚本编辑器有自己的时区。我并不是说这是解决方案,但您可以在代码编辑器中更改时区。另外,这条线today.setHours(0,0,0,0); 是做什么的?那是为了什么?
  • sheet.getRange(selectionRow,27).getValue() 是 3/15/2017 - 手动输入我的电子表格的日期。但是,当我记录它时,它显示为 2017 年 3 月 14 日 23:00:00。我的 setHours 旨在将时间设置为 00:00:00,所以我只需要担心日期匹配,而不是时间。
  • 更新:@Sandy 我正在通过 Broswer.msgbox 输出日期,它们看起来是相同的,但没有触发我的 if 语句来突出显示行。下面是日期在 msgbox 中的显示方式。日期 = 2017 年 3 月 14 日星期二 00:00:00 GMT-0500 (CDT) 今天 = 2017 年 3 月 14 日星期二 00:00:00 GMT-0500 (CDT)
  • msgbox 显示的值可能相同,但变量的数据类型可能不同。您应该检查两个变量的数据类型以确定它们是否相同。 typeof DateLink to Data types Info

标签: date google-apps-script dst


【解决方案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');
    }
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      相关资源
      最近更新 更多