2017-09-14 75 views
1
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列中的日期条目与今天的日期匹配时,我想将整行着色为绿色。当壳体中的日期匹配今天的日期时,颜色整行

+0

什么是你的代码问题 –

回答

1

您的代码有多个问题。

首先,你在你的约会comparaison犯了一个错误

if (dateColumn[i] = todaysDate) { 

,而不是

if (dateColumn[i] == todaysDate) { 

此外,比较迄今为止最好的方法是使用getTime() method的时间进行比较。另见本SO问题:Compare two dates with JavaScript

您尝试使用它可以改变工作表的标签颜色Sheet.setTabColor(String) method,当你尝试获得Range.setBackground(String) methodRange.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'); 
    } 
    } 
} 
+0

我得到一个'TypeError:找不到函数getTime在对象中(第14行,文件“代码”)错误时调试代码,我认为是因为'd'在不是日期对象 – Greconomist

+0

您需要在电子表格中使用日期格式,否则无法进行日期和电子表格日期之间的比较。 –

0

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

+1

答案与他们为什么要工作,解释工作得更好 – apokryfos

+0

@apokryfos?当然,我添加一个参考 –

0

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

=$C2:$C=today() 

设定范围A2:F(改变F到您的最后一个数据列