Google apps script 嵌套如果不起作用

Google apps script 嵌套如果不起作用,google-apps-script,Google Apps Script,当我运行程序时没有*''***if,它可以工作,但当我将它添加到程序中时就不行了。有人能告诉我我做错了什么吗。谢谢大家! 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.getAc

当我运行程序时没有*''***if,它可以工作,但当我将它添加到程序中时就不行了。有人能告诉我我做错了什么吗。谢谢大家!

 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);
    **}**
  }

}

如果像这样,请尝试“如果其他”而不是“嵌套”

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

这不是嵌套的问题。您误解了
r.getColumn()
的作用:它“
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”
的逻辑相同


注意:我假设您正在测试第一行的值;如果您想改为处理行
i
,那么将
0
替换为
i-1

@Abhishek对不起,你是什么意思?因为我的第14列是Y,第15列是Jan,但是由于某种原因它没有注册。看看如果s.getName()=“Clients”&&r.getColumn()=“14&&r.getValue()=“Y”这三个条件都是真的,那么肯定会在s.getName()=“Clients”&&r.getColumn()=“15&&r.getValue()=“Jan”行下面返回false(r.getColumn())==15和r.getValue()==“Jan”返回false)。如果您想添加更多月份,那么最好使用r.getColumn()的开关。@Abhishek抱歉,我想我第一次误解了它。我希望它满足所有标准,这意味着必须满足第14列和第15列的标准?它总是给你一个值14或15。嵌套如果不起作用,因为look r.getColumn()给你14,这是真的,在内部if语句中,你检查r.getColumn()等于15,这是不可能的,所以它返回false。对于i,你的意思是做一个循环来检查所有行吗?(0,13,1,1)后面的1,1是什么