【发布时间】:2014-11-13 21:48:01
【问题描述】:
前几天,我发布了关于获取谷歌表格以将单元格的背景颜色更改为红色,如果该行中的任何单元格具有红色背景。我现在正试图让它检查黄色、橙色和红色,并相应地更改第一个单元格(每种颜色接下来会取代,所以只有在没有橙色或红色单元格的情况下才会出现黄色)。
Serge insas 提供的完美运行的代码是这样的:
function MakeRed(){
var book = SpreadsheetApp.getActiveSpreadsheet();
var sheet = book.getActiveSheet();
var first_column = "B";
var first_row = 1;
var last_row = sheet.getLastRow();
var last_column = sheet.getLastColumn();
var active_row = 1;
var range_input = sheet.getRange(1,1,last_row,last_column);
var range_output = sheet.getRange("A1");
var cell_colors = range_input.getBackgroundColors();
var color = "#ff0000";
for(var r = 0; r < cell_colors.length; r++) {
var rowWoColA = cell_colors[r].slice(1);
if(rowWoColA.indexOf(color)>-1) {
cell_colors[r][0]=color;
} else {
cell_colors[r][0]="#ffffff";
}
}
range_input.setBackgroundColors(cell_colors);// update sheet colors
}
我将代码修改为我认为适用于此版本的代码,但我什么也没得到(奇怪的是,在 Google 表格中,执行记录仍然空白?)
function ColorOfCol(){
var book = SpreadsheetApp.getActiveSpreadsheet();
var sheet = book.getActiveSheet();
var first_column = "B";
var first_row = 1;
var last_row = sheet.getLastRow();
var last_column = sheet.getLastColumn();
var active_row = 1;
var range_input = sheet.getRange(1,1,last_row,last_column);
var range_output = sheet.getRange("A1");
var cell_colors = range_input.getBackgroundColors();
var color1 = "#ffff00";
var color2 = "#ff9900";
var color3 = "#ff0000";
for(var r = 0; r < cell_colors.length; r++) {
var rowWoColA = cell_colors[r].slice(1);
if(rowWoColA.indexOf(color1)>-1) {
cell_colors[r][0]=color1;
} else if(rowWoColA.indexOf(color2)>-1) {
cell_colors[r][0]=color2;
} else if(rowWoColA.indexOf(color3)>-1) {
cell_colors[r][0]=color3;
} else {
cell_colors[r][0]="#ffffff";
}
}
range_input.setBackgroundColors(cell_colors);// update sheet colors
}
【问题讨论】:
-
对我来说很好,除了
setBackgroundColors()已被弃用的抱怨。 (改用setBackgrounds()。)您是否有多个ColorOfCol副本? 活动表中有数据吗? -
好的,除了我设置的触发器(对工作表使用 onChange 事件)似乎不再导致代码运行之外,它正在工作。如果我在代码编辑器中手动运行代码,或者按时间设置一个新的触发器(每分钟进行一次测试),那么这段代码就是我想要的。试图弄清楚为什么以前起作用的触发器现在不起作用。
-
检查您是否正在使用任何需要身份验证的服务。 onChange 触发器匿名运行,这限制了它的功能。
标签: google-apps-script google-sheets