【发布时间】:2018-10-08 21:22:16
【问题描述】:
目前我通过在谷歌表格中使用条件格式有一个工作版本。不幸的是,我添加的条件越多,性能就会降低。我想将我的条件格式转换为每小时运行的谷歌脚本。 这基本上是一个甘特图,非常适合我的需求。
条件格式的公式是
=and(AF$2>=$L3,AF$2<=$M3)
其中 L 列是开始日期,M 列是结束日期
单元格AF$2, AG$2, AH2...是日期,从今天开始,明天开始,后天等等。
使用谷歌脚本的替代方法是什么。 这是我目前所拥有的:
function columnToLetter(column)
{
var temp, letter = '';
while (column > 0)
{
temp = (column - 1) % 26;
letter = String.fromCharCode(temp + 65) + letter;
column = (column - temp - 1) / 26;
}
return letter;
}
function setCellBackgrounds() {
// The name of the sheet to process.
var sheetName = "MySheet";
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var range = sheet.getRange("AF3:BJ100");
var values = range.getValues();
var colors = [];
for (var x = 0; x < values.length; x++) {
colors[x] = [];
for (var y = 0; y < values[x].length; y++) {
//trying to apply the formula "=and(AF$2>=$L3,AF$2<=$M3)" here but I'm getting an error
if (columnToLetter(32+y)+2 >= columnToLetter(12)+x && columnToLetter(32+y)+2 <= columnToLetter(13)+x ) {
colors[x][y] = '#999999';
} else {
//colors[x][y] = '#ffffff';
}
}
}
range.setBackgrounds(colors);
}
【问题讨论】:
-
把错误放在你的问题中。请注意,如果您将值作为数组,则不需要使用字母表示法 - 只需在 2D 数组中偏移适当的量即可。请注意,您需要小心索引不存在的元素(数组是 0-base)
-
你的意思是值[0][2]之类的东西?如何访问该单元格中的实际值。当我尝试 values[0][2] 或此数组中的任何偏移量时,结果为 null/empty
-
是的,那是正确的。它是空的,因为 range
AF3:BJ100实际上是空的。
标签: google-apps-script google-sheets gantt-chart gs-conditional-formatting