0

setBackgroundRGB()如果我将文字传递给该课程,则该课程有效

setBackgroundRGB(255,255,255); 

但如果我将它传递给一个变量,它会失败:

_Color = "255, 255, 255";

setBackgroundRGB(_Color); 

不起作用并返回错误

`Cannot find method setBackgroundRGB(string)`

我需要在这里做一些我不知道的转换吗?

4

5 回答 5

2

您需要传递一个数组。以下应该有效:

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

注意 - 这本质上就是上面的帖子所做的—— split() 将字符串转换为数组......

于 2013-09-01T11:12:38.177 回答
0

您正在传递一个字符串。它需要整数。

尝试这个:

_Color = 255,255,255

我怀疑这会起作用。您可能需要为每个变量做多个变量

red = 255;
green = 255;
blue = 255;
于 2013-09-01T01:58:05.227 回答
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);
}
于 2013-09-01T15:57:25.963 回答
0

实际上,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);
}
于 2013-09-01T08:28:12.333 回答
0

const rgb = {红色:224,绿色:224,蓝色:224}

....setBackgroundRGB(rgb.red, rgb.green, rgb.blue);

于 2021-12-21T21:52:38.540 回答