Google apps script Google电子表格脚本,根据单元格值自动为整行着色

Google apps script Google电子表格脚本,根据单元格值自动为整行着色,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我接手了一份小组成员名单,这份名单是经过几代领导人的传承而来的,我不太明白 该电子表格用于根据第10列中单元格的值自动更新每行的颜色(来自6个不同的选项),但它神秘地停止了这样做 我一直在看里面的脚本,但我不太明白-有人有什么建议吗?非常感谢 function colorRow(r){ // only uncomment for Debuging //r = 2; var sheet = SpreadsheetApp.getActiveSheet(); var dataRa

我接手了一份小组成员名单,这份名单是经过几代领导人的传承而来的,我不太明白

该电子表格用于根据第10列中单元格的值自动更新每行的颜色(来自6个不同的选项),但它神秘地停止了这样做

我一直在看里面的脚本,但我不太明白-有人有什么建议吗?非常感谢

function colorRow(r){

  // only uncomment for Debuging
  //r = 2;

  var sheet = SpreadsheetApp.getActiveSheet();

  var dataRange = sheet.getRange(r, 1, 1, sheet.getLastColumn());

  // will get the row
  var row = dataRange.getValues()[0];

  // change the row[8] to row[?] where ? is your column number
  var cellValue = row[10];

  if(cellValue == "1"){
    dataRange.setBackgroundRGB(255, 0, 255);
  }
  else if(cellValue == "2"){
    dataRange.setBackgroundRGB(255, 153, 0);
  }
  else if(cellValue == "3"){
    dataRange.setBackgroundRGB(153, 204, 255);
  }
  else if(cellValue == "4"){
    dataRange.setBackgroundRGB(0, 255, 0);
  }
  else if(cellValue == "5"){
    dataRange.setBackgroundRGB(0, 255, 255);
  }
  else if(cellValue == "6"){
    dataRange.setBackgroundRGB(255, 255, 0);
  }

  // not sure if I need to flush...
  SpreadsheetApp.flush(); 
}

function onEdit(event)
{
  colorRow(event.source.getActiveRange().getRowIndex());
}

您说颜色取决于第10列的内容,但代码显示
var cellValue=row[10]

数组索引为0,这意味着您将获得第11列的内容…(电子表格中的列索引为1)

这不是问题吗

EDIT:当您查看脚本时,我还建议在
IF
语句中使用不同的条件,因为您使用的条件非常脆弱:如果有人在数字之前或之后键入空格,它将失败。。。 我会这样做:

  if(cellValue.toString().match("1") == "1"){
它将“捕获”“1”值,即使它在其单元格中不是唯一的,并将最大值设置为9(之后,您将与10、11等混淆)
(但这只是一个建议…;)

非常感谢你的建议,Serge-我同意,即使有空格,也能捕捉数字的条件更安全。无论出于何种原因,它都可以像现在一样处理列集。剩下的主要问题是r:如果我取消注释r=2并替换我想要重新调用的行(即:r=323),它对那一行有效,但我不知道如何使它对所有行以及未来的行有效。无论如何,非常感谢你的帮助!