我有一个包含两个工作表的工作簿:
"MASTER";以及";已提交";
当列中的单词";P〃;在";"大师";片材从";"待定";至";提交";我希望将该行从主工作表中删除,并添加到提交工作表的最后一行。
我可以毫无错误地保存脚本,但当我将单元格更改为"时;提交";从";"待定";什么都没发生。。。
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var r = SpreadsheetApp.getActiveSpreadsheet().getActiveRange();
if(s.getName() == "MASTER" && r.getColumn() == 17 && r.getValue() == "SUBMITTED") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("SUBMITTED");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
这样试试:
function onEdit(e) {
const s=e.range.getSheet();
if(s.getName()=="MASTER" && e.range.columnStart==16 && e.value=="SUBMITTED") {
const ts=e.source.getSheetByName('SUBMITTED');
s.getRange(e.range.rowStart,1,1,s.getLastColumn()).moveTo(ts.getRange(ts.getLastRow()+1,1));
s.deleteRow(e.range.rowStart);
}
}
假设:
- 选项卡的名称为:MASTER和SUBMIT
- P列中的单元格需要编辑为值:提交
- P列是16而不是17
这将起作用:
function onEdit(e) {
const row = e.range.getRow();
const col = e.range.getColumn();
const s = e.source.getSheetByName("MASTER")
const as = e.source.getActiveSheet();
const targetSheet = e.source.getSheetByName("SUBMITTED");
if(as.getName() == "MASTER" && col == 16 && as.getRange(row,col).getValue() == "SUBMITTED") {
targetSheet.appendRow(s.getRange(row, 1, 1, s.getLastColumn()).getValues().flat([1]));
s.deleteRow(row);
}
}