我试着想出一种只给未着色(白色)的细胞着色的方法,但是把那些颜色已经不受影响的细胞保留下来。
我现在正在做的事情是这样的:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetSelect = ss.getSheetByName("DataFile");
var range = sheetSelect.getRange(2,1,5,16)
if (range.getBackgrounds() == "#ffffff" )
{
range.setBackground("#EEEEEE")
}然而,它似乎不起作用,有什么建议或建议吗?
发布于 2015-10-12 11:17:32
问题是range.getBackgrounds()返回数组,如下所示:[“第1行的颜色,第1列的颜色”,“第1行的颜色,column2”.]
因此,您需要使用两个嵌套的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);
}https://stackoverflow.com/questions/33071631
复制相似问题