setBackgroundRGB()リテラルを渡すと、クラスは機能します
setBackgroundRGB(255,255,255);
しかし、代わりに変数を渡すと、失敗します:
_Color = "255, 255, 255";
setBackgroundRGB(_Color);
動作せず、エラーを返します
`Cannot find method setBackgroundRGB(string)`
ここで、私が気付いていない何らかの変換を行う必要がありますか?
setBackgroundRGB()リテラルを渡すと、クラスは機能します
setBackgroundRGB(255,255,255);
しかし、代わりに変数を渡すと、失敗します:
_Color = "255, 255, 255";
setBackgroundRGB(_Color);
動作せず、エラーを返します
`Cannot find method setBackgroundRGB(string)`
ここで、私が気付いていない何らかの変換を行う必要がありますか?
配列を渡す必要があります。以下が機能するはずです。
_Color = [255, 255, 255];
setBackgroundRGB(_Color);
注-これは基本的に上記の投稿が行っていることです-split()は文字列を配列に変換します...
文字列を渡しています。整数を取ります。
これを試して:
_Color = 255,255,255
しかし、それがうまくいくとは思えません。それぞれに対して複数の変数を実行する必要がある場合があります
red = 255;
green = 255;
blue = 255;
rangeと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);
}
実際、API にはメソッド setBackgroundRGB(string) がなく、メソッド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(', '));
}
アップデート
ベクトルを取得するには、提示された例を少し広げて、いくつかの改善を適用できます。コメントに示されているいくつかの改善を統合すると、次のようになります。
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);
}