[英]Conditionally formatting cells based on date
我想要基于脚本的格式来对日期列进行颜色编码。
第1行是标签。 Cols CE包含日期;这些是我要为每个日期设置颜色格式的单元格。 我从有条件的黄色开始,一旦粘贴此障碍,就会添加更多颜色。
希望检查每个单元格并对其进行适当着色。 当前版本正在毫无理由地为单元格着色,显然是逐行着色。 (C2:E9)和(C13:E13)范围的所有三列都变为黄色,而C10:E12和C14:E14保持正常。 所有这些范围中的许多日期都是相同的。
我的代码:
function formatting() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses'); var columnO = sheet.getRange(2, 3, sheet.getLastRow() - 1, 3);//the range starts at column 3. var oValues = columnO.getValues(); for (var i = 0; i < oValues.length; i++) { for(var j = 2; j <= 4; j++) {//j=2 is actually column 5 //convert dates from GMT to local var thisDay = new Date(); var todayLocal = thisDay.toLocaleString(); var bullDate = new Date(oValues[i][0]); var bullLocal = bullDate.toLocaleString(); if (bullLocal < todayLocal) { sheet.getRange(i + 1, j + 1, 1, 1).setBackgroundColor('yellow'); } } } }
我认为,还有其他方法可以做到这一点,但是要设法提高代码效率。 有想法吗?
在您的函数中,范围从第3列开始,因此oValues [0] [0]实际上是在第1行column3处找到的。
尝试这个:
function formatting() {
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
var rg=sheet.getDataRange();//this range starts at column 1
var vA=rg.getValues();
var today = new Date();
for(var i=0;i<vA.length; i++){
for(var j=2;j<=4;j++){//j=2 is the third column
var bullDate = new Date(vA[i][j]);
if (bullDate < today){
sheet.getRange(i+1,j+1).setBackgroundColor('yellow');
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.