Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 设置颜色RGB_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 设置颜色RGB

Google apps script 设置颜色RGB,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我试图同时设置一组颜色 我可以对一个范围使用setBackgrounds,首先给每个单元格一个颜色名称,如下所示 但是我想使用其他混合颜色和RGB函数setBackgroundRGB,但是范围有限。能做到吗?或者我必须循环并单独设置它吗 setBackground具有一个范围的setBackgrounds。setBackgroundRGB是否有等价物 我在参考资料中看不到。我想知道除了循环所有内容之外,是否有人有解决方案。一个选项是创建您自己的函数(一种包装器),类似于(您需要应用必要的验证)

我试图同时设置一组颜色

我可以对一个范围使用
setBackgrounds
,首先给每个单元格一个颜色名称,如下所示

但是我想使用其他混合颜色和RGB函数
setBackgroundRGB
,但是范围有限。能做到吗?或者我必须循环并单独设置它吗

setBackground
具有一个范围的
setBackgrounds
setBackgroundRGB
是否有等价物


我在参考资料中看不到。我想知道除了循环所有内容之外,是否有人有解决方案。

一个选项是创建您自己的函数(一种包装器),类似于(您需要应用必要的验证):

/*用于演示的代码*/
函数setColorToRange(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var colorsRGB=[
[
[255, 0, 0],
[0, 255, 0],
[0, 0, 255],
[0, 0, 0]
],
[
[0, 0, 0],
[0, 0, 255],
[0, 255, 0],
[255, 0, 0]
],
[
[0, 255, 0],
[0, 255, 0],
[0, 255, 0],
[0, 255, 0]
]
];
var单元格=sheet.getRange(“B5:E7”);
setBackgroundsRGB(单元格,颜色sRGB);
}
函数setBackgroundsRGB(范围、颜色){
var row=range.getRow(),lastRow=range.getLastRow();
var initColumn=range.getColumn(),lastColumn=range.getLastColumn(),column;
var ss=range.getSheet(),colorRow,colorColumn,subRange;
对于(colorRow=0;row使用此答案中提供的
rgbToHex()
函数:


为什么你不能使用背景色,用颜色代码代替名称。
#FF0000
代替
红色
我需要这个颜色
RGB(20726243)
。你能用一个代码来表达吗?这个选项的优点是它是一个单一的API调用。
/* CODE FOR DEMONSTRATION PURPOSES */
function setColorToRange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var colorsRGB = [
    [
      [255, 0, 0],
      [0, 255, 0],
      [0, 0, 255],
      [0, 0, 0]
    ],
    [
      [0, 0, 0],
      [0, 0, 255],
      [0, 255, 0],
      [255, 0, 0]
    ],
    [
      [0, 255, 0],
      [0, 255, 0],
      [0, 255, 0],
      [0, 255, 0]
    ]
  ];
  var cell = sheet.getRange("B5:E7");

  setBackgroundsRGB(cell, colorsRGB);
}

function setBackgroundsRGB(range, colors) {
  var row = range.getRow(), lastRow = range.getLastRow();
  var initColumn = range.getColumn(), lastColumn = range.getLastColumn(), column;
  var ss = range.getSheet(), colorRow, colorColumn, subRange;
  for (colorRow = 0; row <= lastRow; ++row, ++colorRow) {
    for (column = initColumn, colorColumn = 0; column <= lastColumn; ++column) {
      subRange = ss.getRange(row, column);
      subRange.setBackgroundRGB.apply(subRange, colors[colorRow][colorColumn++]);
    }
  }
}
/* CODE FOR DEMONSTRATION PURPOSES */
function rainbow() {
  var back = [];
  for (var row=0; row <16; row++) {
    back[row]=[];
    for (var col=0; col <16; col++) {
      back[row][col] = rgbToHex(row*16,col*16,Math.round(row+col/2)*16);
    }
  }
  debugger;
  SpreadsheetApp.getActiveSheet()
                .getRange(1, 1, back.length, back[0].length)
                .setValues(back)
                .setBackgrounds(back)
}
rgbToHex(207,226,243) == #cfe2f3