当我在没有*"" ***的情况下运行程序时,如果它可以工作,但是当我在其中添加它时没有。谁能告诉我这里我做错了什么。谢谢!
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);
**}**
}
}
答案 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
。