-1

同時に色のブロックを設定しようとしています。

範囲に使用setBackgroundsして、最初に各セルに次のような色の名前を付けることで、一度にすべてを実行できます

複数列の条件付き書式

しかし、私は他のブレンドされた色とRGB機能を望んでいますsetBackgroundRGBが、範囲はありません。それはできますか?または、ループして個別に設定する必要がありますか?

setBackground範囲を持っsetBackgroundsています。に相当するものはありsetBackgroundRGBますか?

ここの参考書ではわかりません。https://developers.google.com/apps-script/reference/spreadsheet/range . すべてをループするだけでなく、誰かが解決策を持っているかどうか疑問に思っていました。

4

2 に答える 2

2

1 つのオプションは、次のような独自の関数 (一種のラッパー) を作成することです (必要な検証を適用する必要があります)。

/* 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 */
于 2013-08-30T11:00:49.757 に答える
1

rgbToHex()この回答で提供されている関数を使用してください: RGB to Hex および 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
于 2013-08-30T11:37:55.193 に答える