2013-03-03 15 views
1

只是一個說明:我不是很熟悉Google腳本的編碼和全新功能。在Google腳本中測試背景顏色

我想在腳本中測試背景顏色。具體來說,我將有一個存儲在命名範圍中的名稱數組,並且要計算有多少個單元格設置爲綠色。
到目前爲止,我有以下,但收到一個錯誤:類型錯誤:未定義爲「#00FF00」

function testCount(range) { 

    var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange"); 
    var names = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange").getValues(); 

    var NumColumns = ranges.getNumColumns(); 
    var NumRows = ranges.getNumRows(); 
    var c = 0; 

    for (var i = 0; i<NumColumns; i++){ 
    for (var j = 0; j<NumRows; j++){ 
     if (ranges.getBackgrounds()[i][j] ="#00ff00"){ 
     c++; 
     }else{ 
     c=c; 
     } 
    } 
    } 
    return c; 

我抓住綠色的價值無法設置屬性「0.0」時,我嘗試了電池下面的那被着色

return ranges.getBackgrounds()[0][1]; 

回答

1

只是看起來像你的代碼需要一點清潔。我會解釋編輯。

function testCount() { 

    var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange"); 

沒有必要有var names行,因爲它似乎你不使用它。

var NumColumns = ranges.getNumColumns(); 
    var NumRows = ranges.getNumRows(); 

一次抓取所有單元格的背景並將其存儲在一個變量中。

var backgrounds = ranges.getBackgrounds(); 
    var c = 0; 

    for (var i = 0; i<NumColumns; i++){ 
    for (var j = 0; j<NumRows; j++){ 

參考上面創建的backgrounds變量。此外,第一個數字是行號,第二個數字是列號。所以你會想從你原來的東西中交換ij。另外,a = 10將變量a的值10賦予。要檢查是否相等,請使用==。這檢查兩個值是否相同。

 if (backgrounds[j][i] == "#00ff00"){ 
     c++; 
     } 

沒有必要有一個else聲明,不做任何事情。你可以離開else部分。

} 
    } 
    return c; 
} 
+0

對不起菲爾,差不多同步;-) – 2013-03-03 01:08:31

+0

你沒有解釋你的代碼。 = P – 2013-03-03 01:09:00

+0

它真的需要解釋嗎?我覺得很容易理解它是如何工作的。但無論如何,我可以刪除它,如果你想,不用擔心... – 2013-03-03 01:13:46