Google Doc Spreadsheet条件格式脚本

时间:2013-03-31 14:48:24

标签: google-apps-script google-sheets gs-conditional-formatting

我知道Google Docs Spreadsheets目前在比较两个单元格时不支持条件格式。

如果B3 >= E3,则E3背景为绿色,但如果B3 < E3,则E3背景为红色

相反,有一个解决方案的JavaScript工作。

我是脚本新手,无法为but找到正确的语言。

我发现了这个,它将执行格式化的第一部分。

var value1Rule1 = s.getRange('b3').getValue();
var value2Rule1 = s.getRange('e3').getValue();
var range3Rule1 = s.getRange('e3');
var color1 = 'green';

if (value1Rule1 >= value2Rule1) range3Rule1.setBackgroundColor(color1);
else range3Rule1.setBackgroundColor('white');

但我不知道如果value1 is < value2,我会在脚本中将其变为红色。

3 个答案:

答案 0 :(得分:0)

这是一个你可以使用的好例子。 https://webapps.stackexchange.com/questions/45937/conditional-formatting-using-other-cells-in-google-docs

听起来你需要将代码包装在一个函数名中,添加一个新的触发器,其中'Run'设置为,并且Events设置为'From spreadsheet''On edit。'

编辑:

这是避免使用触发器的另一个示例:https://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting-based-on-another-cells-content?rq=1

function colorAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var endRow = sheet.getLastRow();

  for (var r = startRow; r <= endRow; r++) {
    colorRow(r);
  }
}

function colorRow(r){
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, 1, 1, 3);

  var data = dataRange.getValues();
  var row = data[0];

  if(row[0] === ""){
    dataRange.setBackgroundRGB(255, 255, 255);
  }else if(row[0] > 0){
    dataRange.setBackgroundRGB(192, 255, 192);
  }else{
    dataRange.setBackgroundRGB(255, 192, 192);
  }

  SpreadsheetApp.flush(); 
}

function onEdit(event)
{
  var r = event.source.getActiveRange().getRowIndex();
  if (r >= 2) {
    colorRow(r);
  }
}

function onOpen(){
  colorAll();
}
​

答案 1 :(得分:0)

目前不需要脚本:

选择E3到要格式化的范围的末尾(例如E3:E99)和格式,条件格式化......,格式化单元格,如果...... greater than

=B3

红色填充。使用Less than or equal to

添加其他规则(相同范围)
=B3 

绿色填充和完成

答案 2 :(得分:-1)

试试这个

var value1Rule1 = s.getRange('b3').getValue();
var value2Rule1 = s.getRange('e3').getValue();
var range3Rule1 = s.getRange('e3');
var color1 = 'green';

if (value1Rule1 >= value2Rule1) range3Rule1.setBackgroundColor(color1);
else range3Rule1.setBackgroundColor('red');

在“else”语句中将单元格变为“红色”。