嵌套如果不起作用

时间:2017-04-19 03:27:35

标签: google-apps-script

当我在没有*"" ***的情况下运行程序时,如果它可以工作,但是当我在其中添加它时没有。谁能告诉我这里我做错了什么。谢谢!

 function onEdit(event) {
 // assumes source data in sheet named Clients
 // target sheet of move to named Closed List
 // test column with "Y" is col 14 or N
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var s = event.source.getActiveSheet();
 var r = event.source.getActiveRange();

if(s.getName() == "Clients" && r.getColumn() == 14 && r.getValue() == "Y") {
 **if(s.getName() == "Clients" && r.getColumn() == 15 && r.getValue() == "Jan") {**
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Closed List");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
    **}**
  }

}

2 个答案:

答案 0 :(得分:0)

尝试if if ladder而不是嵌套(如果是这样的话)

var row; var numColumns; var targetSheet;
if(s.getName() == "Clients" && r.getColumn() == 14 && r.getValue() == "Y") {
row = r.getRow();
numColumns = s.getLastColumn();
targetSheet = ss.getSheetByName("Closed List");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
} else if(s.getName() == "Clients" && r.getColumn() == 15 && r.getValue() == "Jan") {
row = r.getRow();
numColumns = s.getLastColumn();
targetSheet = ss.getSheetByName("Closed List");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}

//根据评论更新逻辑

var row; var numColumns; var targetSheet;
if(s.getName() == "Clients" && ((r.getColumn() == 14 && r.getValue() == "Y") || (r.getColumn() == 15 && r.getValue() == "Jan"))) {
row = r.getRow();
numColumns = s.getLastColumn();
targetSheet = ss.getSheetByName("Closed List");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}

答案 1 :(得分:0)

这不是嵌套问题。你误解了r.getColumn()的作用:它" Returns the starting column position for this range " r。这意味着如果连续两次调用getColumn()而不更改活动(选定)范围,则getColumn()将返回相同的值。

查看您的评论,似乎您要测试第14列和第15列中的值。

请尝试将r.getColumn() == 14 && r.getValue() == "Y"替换为:

r.offset(0, 13, 1, 1).getValue() == "Y"

甚至是:

r.getValues()[0][13] == "Y"

r.getColumn() == 15 && r.getValue() == "Jan"相同的逻辑。

N.B。:我假设您正在测试第一行的值;如果您想要代替行i,请将0替换为i-1