我有2个谷歌工作表与列E是一个状态下拉多个状态条目。我的工作表被称为"Sheet1“和"Completed”。在status下拉列表中选择"complete“后,我希望将行移动到"Completed”工作表。在移动并激活"Completed“工作表之后,如果我在status下拉列表中选择了"complete”之外的任何内容,我希望该行被移回"Sheet1“。
这是我到目前为止所拥有的。它会将我的行从sheet1移动到completed,但不会移到另一方向。如有任何帮助,我们将非常感谢:
function onEdit(event) {
// assumes source data in sheet named Sheet1
// target sheet of move to named Completed
// test column with "10 Complete" is col 5 or E
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Sheet1" && r.getColumn() == 5 &&
r.getValue() == "10 Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed");
var target =
targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
if(s.getName() == "Completed" && r.getColumn() == 5
&& r.getValue() != "10 Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sheet1");
var target =
targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
}发布于 2021-02-16 06:48:03
你的代码不能工作的原因是你把你的第二个IF语句放在第一个IF语句中。第二个IF语句将永远不会执行。
你当前的代码:
function onEdit(event){
if(s.getName() == "Sheet1" && r.getColumn() == 5 &&
r.getValue() == "10 Complete") {
.....
if(s.getName() == "Completed" && r.getColumn() == 5
&& r.getValue() != "10 Complete") {
......
}
}
}解决方案:
2个IF语句应该在同一级别上。
工作代码:
function onEdit(event) {
// assumes source data in sheet named Sheet1
// target sheet of move to named Completed
// test column with "10 Complete" is col 5 or E
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Sheet1" && r.getColumn() == 5 &&
r.getValue() == "10 Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName() == "Completed" && r.getColumn() == 5
&& r.getValue() != "10 Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sheet1");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}https://stackoverflow.com/questions/66215375
复制相似问题