Google 脚本 if 语句仅在最后一行具有条件格式

Google scripts if statement with conditional formatting on last row only

我正在尝试使用 Google 脚本在 Google [=57] 第二列的最后一行 中仅设置一个 单元格=] 为绿色,如果是:

1. <0,

2.不等于#N/A

部分首选方法

我有以下 if 语句(不使用循环):

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
lastrow = sheet.getLastRow()
if (sheet.getRange(lastrow, 2, 1, 1) >0.00 && sheet.getRange(lastrow, 2, 1, 1) !='#N/A') {
  sheet.getRange(lastrow, 2, 1, 1).setFontColor('green');
}

但是,这不起作用。根本就是没有给字体指定绿色。

不是首选方法

我可以使用循环,基于此answer,并一次循环遍历列中的所有行:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
lastrow = sheet.getLastRow()
var oValues = sheet.getRange(2, 2, lastrow, 1).getValues();

for (var i = 0; i < oValues.length; i++) {
  if (oValues[i] >0.00) {
   sheet.getRange(i, 2, 1, 1).setFontColor('green');
  }
}

但是,缺点是这种方法正在格式化列中的所有行。我只需要格式化最后一行。

有没有办法避免遍历所有行,只检查最后一行是否符合上面的 1.2.

这个答案怎么样?

修改点:

  • 在您的脚本中,sheet.getRange(lastrow, 2, 1, 1) > 0.00sheet.getRange(lastrow, 2, 1, 1) !='#N/A' 表示与范围进行比较。当你想比较一个单元格的值时,可以使用sheet.getRange(lastrow, 2, 1, 1).getValue().
  • <0不等于#N/A的条件可以写成if (value < 0 && value) {}.
  • 最后一行第2列的单元格可以写成sheet.getRange(sheet.getLastRow(), 2)
    • 在您的情况下,您也可以使用 sheet.getRange(sheet.getLastRow(), 2, 1, 1)

上面反映的修改后的脚本如下

修改脚本:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var range = sheet.getRange(sheet.getLastRow(), 2); // Last row of 2nd column
var value = range.getValue(); // Value of last row of 2nd column
if (value < 0 && value) { // <0 and not equal to #N/A
  // range.setBackground("green"); // This line give the background color of cell.
  range.setFontColor("green"); // This line give the font color of cell.
}

如果我误解了你的问题,请告诉我。我要修改。