电子表格的Google App脚本

时间:2013-01-13 19:56:52

标签: google-apps-script

我需要根据其他单元格的值为背景颜色添加背景颜色,但此范围具有不同的值,例如:

1 X 2 1 X X | 2

当检查具有值2的las单元格时,范围单元格必须是独立的颜色,即,只有单元格3必须具有绿色背景颜色,因为它与红色的其他颜色相同。

我有这段代码:

function test() {
  var libro = SpreadsheetApp.getActiveSpreadsheet();
  var range_input = libro.getRange("B3:E3");
  var target_cell = libro.getRange("G3");

  if (range_input.getValues()==target_cell.getValue()) 
  {
    range_input.setBackgroundColor('#58FA58');    
  }

  else
  {
    range_input.setBackgroundColor('#FA5858')
  }  
} 

但问题是不起作用,因为当所有值单元格与最后一个单元格具有相同的值时,该行仅为绿色,这意味着整个行变为红色,尽管单元格三具有正确的值。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

range_input.getValues()返回4个单元格的值数组数组,而target_cell.getValue()返回1个值。

function test() {
  var libro = SpreadsheetApp.getActiveSpreadsheet();
  var range_input = libro.getRange("B3:E3");
  var target_cell = libro.getRange("G3").getValue();//Save the value

  //Gets the values of the range ([0] to retrieve just the first row of values)
  var input_values = range_input.getValues()[0];
  //Gets the backgrounds of the range ([0] to retrieve just the first row of values)
  var backgrounds = range_input.getBackgroundColors()[0];

  //Loop through values in the row, checking against the cell.
  for(var i = 0; i < input_values.length; i += 1){
    if(input_values[i] === target_cell) {
      backgrounds[i] = '#58FA58';
    } else {
      backgrounds[i] = '#FA5858';
    }
  }
  //Put the row of backgrounds back in an array to make it 2d and set the backgrounds
  range_input.setBackgroundColors([backgrounds]);
}