设置颜色RGB

时间:2013-08-30 09:33:49

标签: google-apps-script google-sheets

我试图同时设置一块颜色。

我可以将setBackgrounds用于一个范围,并通过首先为每个单元格赋予颜色名称来一次性完成所有操作

Multiple column conditional formatting

但我想要其他混合颜色和RGB函数setBackgroundRGB但是我想要一个范围。可以吗?或者我是否必须循环并单独设置?

setBackground的范围为setBackgrounds。是否存在等同于setBackgroundRGB的内容?

我在参考文献中没有看到它。 https://developers.google.com/apps-script/reference/spreadsheet/range。想知道是否有人只是循环通过一切解决方案。

2 个答案:

答案 0 :(得分:2)

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

/* 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 */

答案 1 :(得分:1)

使用此答案中提供的rgbToHex()功能:RGB to Hex and Hex to RGB

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