Google apps script 可以用公式设置google电子表格单元格的背景色吗?

Google apps script 可以用公式设置google电子表格单元格的背景色吗?,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,我知道条件格式,但我希望能够使用公式指定颜色。我正在设计一些褪色算法,并在电子表格中计算RGB值。我想将我的3个R、G和B值放在列中,并让第4列显示颜色。不使用公式,应用程序脚本上的onEdit可以做到这一点,但效率不高: function componentToHex(c) { var hex = c.toString(16); return hex.length == 1 ? "0" + hex : hex; } function rgbToHex(r, g, b) {

我知道条件格式,但我希望能够使用公式指定颜色。我正在设计一些褪色算法,并在电子表格中计算RGB值。我想将我的3个R、G和B值放在列中,并让第4列显示颜色。

不使用公式,应用程序脚本上的
onEdit
可以做到这一点,但效率不高:

function componentToHex(c) {
    var hex = c.toString(16);
    return hex.length == 1 ? "0" + hex : hex;
}

function rgbToHex(r, g, b) {
    return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}

function onEdit(){
  var RGBVals = SpreadsheetApp.getActiveSheet().getDataRange().getValues(),
      backSet = [],
      currLin;

  for( lin in RGBVals ){
    currLin = RGBVals[ lin ];
      backSet.push([rgbToHex(currLin[0], currLin[1], currLin[2])]);
  }

  SpreadsheetApp.getActiveSheet().getRange(1, 4, backSet.length).setBackgrounds(backSet);
}

注意:A、B、C列中的R、G、B从第1行开始。

如果不在整个范围内循环,而是使用传递给它的事件来隔离更改的行,则
onEdit()
的效率将大大提高。