2015-10-12 166 views
0

我正在嘗試着出一種僅對無色(白色)單元格進行着色的方法,但將顏色與原色保持原樣。僅着色白色單元格

什麼我的工作,現在看起來是這樣的:

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

是現有的着色「標準'還是通過條件格式添加? – pnuts

+1

標準,而不是條件格式。 – Bardi

回答

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); 
} 
+0

謝謝,作品很有魅力 – Bardi

+0

感謝您的反饋。另外,如果我的帖子回答了您的問題,您應該將其標記爲已接受:) – jvdh