setBackGroundRGB不接受字符串

时间:2013-09-01 00:08:27

标签: javascript google-apps-script google-sheets

如果我将文字传递给

,则课程setBackgroundRGB()可以正常工作
setBackgroundRGB(255,255,255); 

但是如果我把它传给一个变量,它就会失败:

_Color = "255, 255, 255";

setBackgroundRGB(_Color); 

不起作用并返回错误

`Cannot find method setBackgroundRGB(string)`

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

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

试试这个:

_Color = 255,255,255

我怀疑这会奏效。您可能需要为每个

执行多个变量
red = 255;
green = 255;
blue = 255;

答案 2 :(得分: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);
}

答案 3 :(得分: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);
}