我有一个脚本,移动整个行到一个不同的标签,并删除它从标签,它是基于“列表”的选择移动。
脚本如下:
// Script Move & Delete
function onEdit(event) {
// assumes source data in sheet named Needed
// target sheet of move to named Acquired
// test column with yes/no is col 4 or D
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
// In Review Trigger
if(s.getName() == "Applied" && r.getColumn() == 1 && r.getValue() == "In Review") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("In Review");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
// In Review Trigger
else if(s.getName() == "Applied" && r.getColumn() == 1 && r.getValue() == "Failed") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Failed");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}因此,例如,如果选项卡“已应用”上的行和列1上的单元格的值=在审阅中,则该行将移动到选项卡“在审阅中”,但如果列1上的单元格的值=失败,则行将移动到选项卡失败。
这部分工作起来很有魅力,我知道有多个选项卡会有很多其他的,我不是一个开发人员,所以我想知道,如果状态(第1列)更改为已应用被移动到选项卡1,或者如果值更改为失败,我该如何移动行?
基本上,根据每行/制表符中的一列的值在选项卡之间移动行。
提前感谢!
发布于 2021-04-22 07:24:10
这对我很有效:
function onMyEdit(e) {
//e.source.toast('entry');
const s = e.range.getSheet();
if (s.getName() == "Sheet1" && e.range.columnStart == 1 && e.value) {
//e.source.toast('cond')
const names = ['Sheet2', 'Sheet3'];
let idx = names.indexOf(e.value);
if (~idx) {
//e.source.toast('sheet');
let tsh = e.source.getSheetByName(names[idx]);
let tgt = tsh.getRange(tsh.getLastRow() + 1, 1);
s.getRange(e.range.rowStart, 1, 1, s.getLastColumn()).moveTo(tgt);
s.deleteRow(e.range.rowStart);
}
}
}我对名称进行了一些更改,以便于调试,因此请仔细查看它,以确保所有的工作表名称都符合您的需要。
发布于 2021-04-22 14:46:38
如果在移动行时需要更复杂的功能,请看一下moveRowsFromSpreadsheetToSpreadsheet_脚本。不幸的是,在这里直接引用太长了。
https://stackoverflow.com/questions/67204527
复制相似问题