koo*_*gee 4 javascript google-sheets google-apps-script
我正在尝试组合一个谷歌应用程序脚本,该脚本根据另一个单元格的值更改单元格的字体颜色。如果单元格 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');
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想扩展这个脚本以能够做到:如果 B2 > D2 颜色为红色,如果 B2 < C2 颜色为蓝色,否则为绿色。
我看到的第一件事是第 6 行的错误/错别字:column0.getValues()应该是column1.getValues().
另一个错误是在 for 循环中,您getRange(i, 1, 1, 1). 在您写的问题中,您想更改B2单元格颜色,而此语句正在更改 column 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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4538 次 |
| 最近记录: |