谷歌Google Apps脚本基于另一个单元格的值一个小区的条件颜色格式(google apps s

2019-09-21 00:21发布

我试图把一个谷歌的Apps脚本改变的基于另一个单元格的值的单元格的字体颜色。 如果单元格B2> D2,B2的字体颜色变为红色。 问题是,我用JavaScript没有经验......这样的小剧本我复制粘贴和编辑一起不起作用。

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var columnO = sheet.getRange(2, 2, sheet.getLastRow()-1, 1);
  var oValues = columnO.getValues();
  var column1 = sheet.getRange(2, 4, sheet.getLastRow()-1, 1);
  var oValues1 = columnO.getValues();

  for (var i = 0; i < oValues.length; i++) {
    if (oValues[i][0] > oValues1[i][0]) {
      sheet.getRange(i, 1, 1, 1).setFontColors('red');
    }
  }
}

我想这个脚本扩展到能够做到:如果B2> D2红色,如果B2 <C2颜色为蓝色,否则绿色。

Answer 1:

我看的第一件事是上线6个错误/错字: column0.getValues()应该是column1.getValues()

另一个错误是在for循环,在那里你getRange(i, 1, 1, 1) 关于你的问题,你写你想改变B2单元格颜色,这种说法是更改列A 。 此外,该行指数应该开始于2,而不是0。

另一个重要的事情上的脚本认为这样是使用批处理功能,因为这将极大地加快步伐,如

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var values = sheet.getRange(2, 2, sheet.getLastRow()-1, 3).getValues(); //B, C and D
  var colors = [];  

  for (var i = 0; i < values.length; i++)
    colors.push([values[i][0] > values[i][2] ? 'red' :
                 values[i][0] < values[i][2] ? 'blue' : 'green']);
  sheet.getRange(2, 2, colors.length, 1).setFontColors(colors);
}


文章来源: google apps script for conditional color formatting of one cell based on another cell's value