我试图同时设置一块颜色。
我可以将setBackgrounds
用于一个范围,并通过首先为每个单元格赋予颜色名称来一次性完成所有操作
Multiple column conditional formatting
但我想要其他混合颜色和RGB函数setBackgroundRGB
但是我想要一个范围。可以吗?或者我是否必须循环并单独设置?
setBackground
的范围为setBackgrounds
。是否存在等同于setBackgroundRGB
的内容?
我在参考文献中没有看到它。 https://developers.google.com/apps-script/reference/spreadsheet/range。想知道是否有人只是循环通过一切解决方案。
答案 0 :(得分:2)
一个选项是创建自己的函数(一种包装器),类似于(您需要应用必要的验证):
/* CODE FOR DEMONSTRATION PURPOSES */
function setColorToRange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var colorsRGB = [
[
[255, 0, 0],
[0, 255, 0],
[0, 0, 255],
[0, 0, 0]
],
[
[0, 0, 0],
[0, 0, 255],
[0, 255, 0],
[255, 0, 0]
],
[
[0, 255, 0],
[0, 255, 0],
[0, 255, 0],
[0, 255, 0]
]
];
var cell = sheet.getRange("B5:E7");
setBackgroundsRGB(cell, colorsRGB);
}
function setBackgroundsRGB(range, colors) {
var row = range.getRow(), lastRow = range.getLastRow();
var initColumn = range.getColumn(), lastColumn = range.getLastColumn(), column;
var ss = range.getSheet(), colorRow, colorColumn, subRange;
for (colorRow = 0; row <= lastRow; ++row, ++colorRow) {
for (column = initColumn, colorColumn = 0; column <= lastColumn; ++column) {
subRange = ss.getRange(row, column);
subRange.setBackgroundRGB.apply(subRange, colors[colorRow][colorColumn++]);
}
}
}
/* CODE FOR DEMONSTRATION PURPOSES */
答案 1 :(得分:1)
使用此答案中提供的rgbToHex()
功能:RGB to Hex and Hex to RGB。
function rainbow() {
var back = [];
for (var row=0; row <16; row++) {
back[row]=[];
for (var col=0; col <16; col++) {
back[row][col] = rgbToHex(row*16,col*16,Math.round(row+col/2)*16);
}
}
debugger;
SpreadsheetApp.getActiveSheet()
.getRange(1, 1, back.length, back[0].length)
.setValues(back)
.setBackgrounds(back)
}
脚注:
rgbToHex(207,226,243) == #cfe2f3