我试图找出一种只为未着色(白色)细胞着色的方法,但保留那些颜色已经不受影响的细胞。
我现在正在使用的内容如下所示:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetSelect = ss.getSheetByName("DataFile");
var range = sheetSelect.getRange(2,1,5,16)
if (range.getBackgrounds() == "#ffffff" )
{
range.setBackground("#EEEEEE")
}
然而,它似乎没有工作,任何提示或建议?
答案 0 :(得分:1)
问题是range.getBackgrounds()返回一个数组数组,如下所示:[[第1行第1列颜色“],[”第1行颜色,第2列“] ......]
因此,您需要使用两个嵌套的for循环访问背景颜色,并保留已更改的值(即如果不是#ffffff)或将其更改为#EEEEEE:
function main() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetSelect = ss.getSheetByName("Sheet1");
var range = sheetSelect.getRange(2,1,5,16);
var oldBackground = range.getBackgrounds()
var newBackground = [];
for (var i=0; i < oldBackground.length; i++) {
newBackground.push([])
for (var j=0; j < oldBackground[i].length; j++)
{
if (oldBackground[i][j] != "#ffffff") {
newBackground[i].push(oldBackground[i][j]);
}
else {
newBackground[i].push("#EEEEEE");
}
}
}
range.setBackgrounds(newBackground);
}