根据不同单元格上不同Hex值的输入,为一个单元格生成多个彩色背景?

时间:2015-11-12 01:42:32

标签: javascript google-sheets hex

换句话说,当在单元格A1中键入00FF00时,单元格B1的公式将其转换为#00FF00,它会自动突出显示具有相应颜色的单元格B1。第一次工作。

然而,一旦将单元格A1的十六进制值手动更改为FF0000之类的另一种颜色,单元格B1会自动将值更改为#FF0000而不是背景 - >之前的背景仍然存在(在这种情况下为#00FF00)。

2 个答案:

答案 0 :(得分:0)

尝试以下脚本代码:

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var c = ss.getActiveCell();
  if( s.getName() == 'Sheet1' && c.getA1Notation() == 'A1' )
  s.getRange('B1').setBackground( '#' + c.getValue() );
};


注意:在上面的代码中更改工作表名称" Sheet1"还有细胞" A1" &安培; " B1"根据您的要求。

答案 1 :(得分:0)

这是一个有效的代码,但我需要手动输入Hex值以使背景颜色自动显示 - >目前,由公式(其中包含A1 + A2 + A3个单元格)产生的B1中的十六进制值只能工作一次(然后,只要改变十六进制值,单元格B1保持其先前的背景颜色,即使单元格-B1中的十六进制值发生变化。

// regex for hex color codes
HEX_COLOR_REGEX = /(^#[0-9A-Fa-f]{3}$)|(#[0-9A-Fa-f]{6}$)/;

// column to watch for changes (i.e. column where hex color codes are to be entered)
HEX_CODE_COLUMN = 5; // i.e. column A

// column to change when above column is edited
HEX_COLOR_COLUMN = 5; // i.e. column B

// utility function to test whether a given string qualifies as a hex color code
function hexTest(testCase) {
  return HEX_COLOR_REGEX.test(testCase);
}

function onEdit(e) {
  var range = e.range;
  var row = range.getRow();
  var column = range.getColumn();
  if (column === HEX_CODE_COLUMN) {
    var values = range.getValues();
    values.forEach( function checkCode(rowValue, index) {
      var code = rowValue[0];
      if (hexTest(code)) {
        var cell = SpreadsheetApp.getActiveSheet().getRange(row + index, HEX_COLOR_COLUMN);
        cell.setBackground(code);
        SpreadsheetApp.flush();
      }
    });
  }
}