为什么我的代码将数据从一个工作表移动到另一个工作表不起作用?



我有一个包含两个工作表的工作簿:

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

假设:

  • 选项卡的名称为:MASTERSUBMIT
  • 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);
}
}

最新更新