我试图把一个谷歌的Apps脚本改变的基于另一个单元格的值的单元格的字体颜色。 如果单元格B2> D2,B2的字体颜色变为红色。 问题是,我用JavaScript没有经验......这样的小剧本我复制粘贴和编辑一起不起作用。
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var columnO = sheet.getRange(2, 2, sheet.getLastRow()-1, 1);
var oValues = columnO.getValues();
var column1 = sheet.getRange(2, 4, sheet.getLastRow()-1, 1);
var oValues1 = columnO.getValues();
for (var i = 0; i < oValues.length; i++) {
if (oValues[i][0] > oValues1[i][0]) {
sheet.getRange(i, 1, 1, 1).setFontColors('red');
}
}
}
我想这个脚本扩展到能够做到:如果B2> D2红色,如果B2 <C2颜色为蓝色,否则绿色。
我看的第一件事是上线6个错误/错字: column0.getValues()
应该是column1.getValues()
另一个错误是在for循环,在那里你getRange(i, 1, 1, 1)
关于你的问题,你写你想改变B2
单元格颜色,这种说法是更改列A
。 此外,该行指数应该开始于2,而不是0。
另一个重要的事情上的脚本认为这样是使用批处理功能,因为这将极大地加快步伐,如
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var values = sheet.getRange(2, 2, sheet.getLastRow()-1, 3).getValues(); //B, C and D
var colors = [];
for (var i = 0; i < values.length; i++)
colors.push([values[i][0] > values[i][2] ? 'red' :
values[i][0] < values[i][2] ? 'blue' : 'green']);
sheet.getRange(2, 2, colors.length, 1).setFontColors(colors);
}
文章来源: google apps script for conditional color formatting of one cell based on another cell's value