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;
使用范围和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);
}
const rgb = {红色:224,绿色:224,蓝色:224}
....setBackgroundRGB(rgb.red, rgb.green, rgb.blue);