0

我正在接管一个小组成员名单,该名单已经通过几代“领导层”传承下来,我无法弄清楚......

电子表格用于根据第 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());
}
4

1 回答 1

1

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

数组索引为 0,这意味着您正在获取第 11 列的内容...(电子表格中的列索引为 1)

那不是问题吗?

编辑:当您查看脚本时,我还建议在您的IF陈述中使用不同的条件,因为您使用的条件非常脆弱:如果有人在数字之前或之后键入空格,它将失败......我什么d 是这样的:

  if(cellValue.toString().match("1") == "1"){

它会“捕获”“1”值,即使它在其单元格中并不孤单,并且会达到 9 的值(之后你会混淆 10、11 等......)(但这只是一条建议...;)

于 2013-01-28T09:30:12.783 回答