Google表格脚本编辑器中的简单条件格式

时间:2015-09-25 16:08:09

标签: google-apps-script google-sheets

我正在尝试使用脚本而不是工作表中的条件格式编辑器创建一些基本的条件格式设置规则,因为当添加或删除新行时,它会破坏已设置的规则。例如,当删除一行时,条件可以是范围A:C,但是然后它添加“A1:C5,A6:C898”。这会导致规则跳过某些行,所以我希望脚本能解决这个问题。

因此,如果单元格文本正好为“Y”,我只想将单元格背景更改为绿色。如果文本正好是“N”,我想将其更改为红色。我有其他我想要使用的规则,但我对此基础知识有困难。

到目前为止我的剧本中有什么:

#recout{
text-align:center;
width: 80%;
margin: 0 auto;
text-align: center;
}
.recleft,
.recright{
    display: inline-block;
    width: 50px;
    min-height: 550px;
    margin: 5px;
}
.recin{
    background: #000000;
    display: inline-block;
    vertical-align:top;
    min-height: 550px;
    margin: 0;
    width: 550px;
    border-radius: 70px 70px 0 0;
}

1 个答案:

答案 0 :(得分:1)

我对您的代码进行了一些修改。 函数getRange我认为它不能以这种方式接受范围,相反我认为它只能得到继续的范围(例如A1:E10)

为此,我创建了一个包含所需范围的数组,然后循环遍历它们。

功能" getValues"返回一个二维数组,因此您需要第二个循环来从单元格中获取实际值。

然后,由于您已经拥有该范围,因此您需要将该单元格放在该范围内而不是新的完整范围。

function onEdit(e) {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("PRECLOSING");;
  var columns = ['E:E','I:J','M:M','P:P','S:V','AB:AC','AF:AF'];

  for(var col in columns){ //loop to iterate the desired ranges

    var range = sheet.getRange(columns[col]); 
    range.activate();

    var values = range.getValues();

    //for each row that data is present
    for(var i = 0; i < values.length; i++) { //loop to iterate the rows
      for( var j = 0; j< values[i].length ; j++){   //loop to iterate the columns 
        var cell = range.getCell(i+1, j+1);      
        if ( values[i][j] == "X" )
         {
           cell.setBackground('black');
         }              
      } 
     }
   }
}

希望这有帮助。