Google Spreadsheets脚本可根据单元格值自动为整行着色

时间:2013-01-28 08:33:25

标签: google-apps-script google-sheets

我正在接管一个小组成员名单,该名单已经过几代人的领导传承,我不能相当弄清楚...

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

1 个答案:

答案 0 :(得分:1)

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

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

这不是问题吗?

编辑:当您查看脚本时,我还建议您在IF语句中使用不同的条件,因为您使用的条件非常脆弱:如果有人输入数字之前或之后的空间会失败... 我要做的是这样的事情:

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

它将“捕获”'1'值,即使它不是单独存在于其单元格中并且将达到值9(此后你会对10,11等感到困惑......) (但这只是一个建议......;)