【问题标题】:Google Spreadsheets script to automatically color an entire row based on a cell value用于根据单元格值自动为整行着色的 Google 电子表格脚本
【发布时间】:2013-01-28 08:33:25
【问题描述】:

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

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

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

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

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

    这不是问题吗?

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

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

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

    【讨论】:

    • 非常感谢您的建议,Serge - 我同意即使有空格也能捕获数字的条件更安全。无论出于何种原因,它都适用于现在的列集。剩下的主要问题是 r:如果我取消注释 r=2 并替换我想要重新着色的行(即:r=323),它适用于该单行,但我不知道如何制作它适用于所有行以及未来的行。无论如何,非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2019-04-19
    • 2021-06-08
    相关资源
    最近更新 更多