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
}
}
}
}
我不确定这是否可行,但我正在尝试使用 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
}
}
}
}