2013-09-01 130 views
0

setBackgroundRGB()作品,如果我將它傳遞文字setBackGroundRGB不接受字符串

setBackgroundRGB(255,255,255); 

,但如果我將它傳遞一個變量,而不是,它失敗:

_Color = "255, 255, 255"; 

setBackgroundRGB(_Color); 

不工作,並返回一個錯誤

`Cannot find method setBackgroundRGB(string)` 

我是否需要做一些轉換在這裏,我不知道的?

回答

0

做多變量事實上,API沒有一個方法setBackgroundRGB(串),提供了一種方法setBackgroundRGB(Integer, Integer, Integer),然而,一個選項,以達到你所需要的,有一個字符串作爲輸入:

function setColorToRange() { 
    var colorRGB = '0, 255, 0'; 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet();  
    var range = sheet.getRange('A1:B3'); 
    range.setBackgroundRGB.apply(range, colorRGB.split(', ')); 
} 

UPDATE

要獲得矢量可以應用了一些改進,擴大了一點的例子提出,我們整合一些在指定的改進導致以下內容:

function setColorToRange() { 
    var colorRGB = '0, 255, 0'; 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet();  
    var range = sheet.getRange('A1:B3'); 
    var arrColorRGB = getRGB(RGBString); 
    range.setBackgroundRGB.apply(range, arrColorRGB); 
} 

function getRGB(RGBString) { 
    // Returns a vector of integers 
    return RGBString.replace(/ /g, '').split(',').map(returnInt); 
} 

function returnInt(value) { 
    return parseInt(value, 10); 
} 
+0

完美,太感謝你了,它的工作原理。 – VikingBlooded

0

您正在傳遞一個字符串。它需要整數。

試試這個:

_Color = 255,255,255 

我懷疑然而,將工作。您可能需要爲每個

red = 255; 
green = 255; 
blue = 255; 
2

您需要傳遞數組。下面應該工作:

_Color = [255, 255, 255]; 
setBackgroundRGB(_Color); 

注 - 實際上,這就是後上面做 - 斯普利特()將字符串轉換爲數組...

0

同樣的方法的另一種變體使用範圍RGBstring作爲參數:

function test(){ // to define 2 parameters 
    var range = SpreadsheetApp.getActiveSheet().getRange('A1:B3'); 
    setColorToRange(range,'0, 255, 0'); 
} 

function setColorToRange(range,RGBString) { 
    var colorRGB = RGBString.replace(/ /g,'').split(',');// first remove spaces if present then split on comma only to get the array of integers 
    range.setBackgroundRGB.apply(range, colorRGB); 
}