Google 应用程序脚本中 IF 函数内的 IF 函数

IF function within an IF function in Google App Script

我不确定这是否可行,但我正在尝试使用 Google 脚本在 if 函数中实现 if 函数。

我的代码是这样的:

function changeYears(sheet) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange();
var numRows = data.getNumRows();
var values = data.getValues();
for (var row = 0; row <= numRows - 1; row++) {
var stri = values[row][18];
if (stri.indexOf("Yes")) {
return sheet.getRange('E4:E').getValues()
    .map(function (r, i) {
        if (r[0] && r[0].indexOf(" ") > -1 && /\d/.test(r[0])) {
            var res = r[0].split(" ")[1];
            r[0] = "Year " + (res - 1);
        }
        return r;

    });
   }

}
}

该脚本的目的是查看 S 列并检查该列中是否有 'Yes'。如果有 'Yes',那么它会查看 E 行,并且会从 'Year 1'、'Year 2'、'Year 3'、'Year 4' 和'Year 5' 并且脚本应该将该值分别更改为 'Year 0'、'Year 1'、'Year 2'、'Year 3' 和 'Year 4'。 (只有 S 列中有一个 'Yes')当我 运行 脚本时,我没有收到任何错误,但也没有任何反应。有任何想法吗?

您不能仅在值数组中分配值来更新单元格值,而且您已经在循环中,不需要在 E 列上再次循环。
要更新值,您应该使用 setValue function

所以你可以将你的代码简化成这样

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange();
  var numRows = data.getNumRows();
  var values = data.getValues();

  //start check from 4 row, row index started from 0
  for (var row = 3; row <= numRows - 1; row++) {
    var cell = data.getCell(row+1, 5);//get reference to cell in E column, here row index start from 1
    var stri = values[row][18]; //get value from S column
    if (stri.indexOf("Yes")!=-1) { //check that it contains 'Yes'
      var value = cell.getValue(); //get value from referenced cell in E column
      if (value && value.indexOf(" ") > -1 && /\d/.test(value)) {
        var res = parseInt(value.split(" ")[1]);
        cell.setValue("Year " + (res - 1));//set value to referenced cell
      }
    }
  }
}