繁体   English   中英

Google App脚本中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列,并检查该列中是否有“是”。 如果为“是”,则它将查看E行,并且将从“ 1年级”,“ 2年级”,“ 3年级”,“ 4年级”和“ 5年级”列表中得到一个值,脚本应将该值分别更改为“ 0年”,“ 1年”,“ 2年”,“ 3年”和“ 4年”。 (在S列中只有一个“是”)运行脚本时,我没有收到任何错误,但也没有任何反应。 有任何想法吗?

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

因此,您可以将代码简化为以下形式

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
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM