当shell中的日期与今天的日期匹配时,将整行着色

时间:2017-09-14 13:17:05

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

function colorEntireRowGreenWhenDateOfEventMatchesCurrentDate() {

  var data = SpreadsheetApp.getActiveSheet();
  var dateColumn = data.getRange("C2:C15").getValues();
  var todaysDate = new Date();
  Logger.log(data)

  for (i=0; i=dateColumn.length; i++) {
    if (dateColumn[i] = todaysDate) {
      data.setTabColor("#3c643c");
    }
  }
}

简单易用。当C列中的日期条目与今天的日期匹配时,我想将整行绿色着色。

3 个答案:

答案 0 :(得分:1)

您的代码存在多个问题。

首先,你在日期比较中犯了错误

 if (dateColumn[i] = todaysDate) {

而不是

 if (dateColumn[i] == todaysDate) {

此外,比较日期的最佳方法是使用getTime() method比较时间。另见这个问题:Compare two dates with JavaScript

当您尝试获取Sheet.setTabColor(String) methodRange.setBackground(String) method时,您尝试使用Range.setBackgroundRGB(red, green, blue) method修改工作表的标签颜色。

这是一个解决方案:

function colorEntireRowGreenWhenDateOfEventMatchesCurrentDate() {

  var data = SpreadsheetApp.getActiveSheet();
  var range = data.getRange("C2:C15");
  var values = range.getValues();
  var today = new Date();
  var todaysDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
  Logger.log(data);
  range.setBackground(null);

  for (var i in values) {
    var d = values[i][0];
    if (d.getTime() === todaysDate.getTime()) {
      var row = parseInt(i) + 1;
      data.getRange(range.getCell(row, 1).getRow(),1,1,data.getMaxColumns()).setBackground('#3c643c');
    }
  }
}

答案 1 :(得分:0)

根据文档,this解释了如何为单元格设置背景颜色。您可以使用setBackgroundsetBackgroundRGB

答案 2 :(得分:0)

使用条件格式可以更简单地完成此操作。在A2中使用自定义公式。

=$C2:$C=today()

设置范围A2:F(将F更改为上一个数据列。