如何根据单元格值更改行的背景颜色? -Google电子表格

时间:2013-05-03 19:10:15

标签: google-apps-script google-sheets

我正试图弄清楚如何在Google Spreadsheets上执行以下操作: 将字母“x”放在A列第2行(标有“状态”的列)中,并自动将第2行的背景颜色更改为RGB(244,204,204)。我希望电子表格中的每一行都有这个。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

转到“工具>脚本编辑器”并保存并运行以下代码:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var rows = sheet.getRange('a1:z');
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++) {
    var n = i+1;
    var bgColor = (values[i].indexOf('N/A') == -1) ? 'white' : 'red';
    sheet.getRange('a'+n+':z'+n).setBackgroundColor(bgColor);
  }
};

当任何单元格包含值“N / A”时,它基本上将行单元格的背景颜色从“A”更改为“Z”。

答案 1 :(得分:0)

使用onEdit()触发器可以使用此代码

function onEdit(e) {
    if (e.range.getColumn() ==1){
      e.range.setBackgroundRGB(244, 204, 204);
    }
}

答案 2 :(得分:-1)

@Dan Sudhakar的响应适用于整行,只要你调整 sheet.getRange('a'+ n +':z'+ n),其中:z 到工作表的最后一列。不过,我确实需要额外的帮助。如何设置多个范围?我改变了对我有用的东西,但它只适用于现在对C列进行的调整而忽略了A.

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var rows = sheet.getRange('a1:a');
  var rows = sheet.getRange('c1:c'); // ADDED THIS //
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++) {
    var n = i+1;
    var bgColor = (values[i].indexOf('N/A') == -1) ? 'white' : 'red';
    sheet.getRange('a'+n+':b'+n).setBackgroundColor(bgColor);
   sheet.getRange('c'+n+':d'+n).setBackgroundColor(bgColor);  // ADDED THIS //
  }
};