Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date Google应用程序脚本-如果日期=今天,突出显示行_Date_Google Apps Script_Dst - Fatal编程技术网

Date Google应用程序脚本-如果日期=今天,突出显示行

Date Google应用程序脚本-如果日期=今天,突出显示行,date,google-apps-script,dst,Date,Google Apps Script,Dst,我有一个单元格,其中包含手动设置的日期。如果这个日期=今天,我想突出显示整行。我原以为我的工作还不错,但夏令时给我的约会比较带来了巨大的麻烦。有人能帮忙吗 现在,如果我的单元格包含“2017年3月15日”,脚本将告诉我日期等于“2017年3月14日”。我知道由于DST的原因,我需要休息一个小时,但我不知道如何在比较我的约会时纠正这个问题。现有代码如下 function highlightRow (selectionRow) { var ss = SpreadsheetApp.getActi

我有一个单元格,其中包含手动设置的日期。如果这个日期=今天,我想突出显示整行。我原以为我的工作还不错,但夏令时给我的约会比较带来了巨大的麻烦。有人能帮忙吗

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

}

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

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');
    }
}

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

我们不知道
sheet.getRange(selectionRow,27)
的值是否为。添加一个
Logger.log('dateToFlag:'+dateToFlag)
语句;运行代码并查看日志。然后告诉我们这个值是多少。脚本编辑器有自己的时区。我并不是说这就是解决方案,但您可以在代码编辑器中更改时区。还有,今天这行
做了什么。设置小时(0,0,0,0)做什么?这是为了什么?sheet.getRange(selectionRow,27).getValue()是2017年3月15日-手动输入到我的电子表格中的日期。然而,当我记录时,它显示为2017年3月14日23:00:00。我的设置时间旨在将时间设置为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可能显示相同的值,但变量的数据类型可能不同。您应该检查两个变量的数据类型,以确定它们是否相同<代码>日期类型