首页 > 解决方案 > 为什么我的代码不能将数据从一个工作表移动到另一个工作?

问题描述

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

“大师”和“提交”

当“主”表上“P”列中的单词从“待定”更改为“已提交”时,我希望将该行从主表中删除并添加到已提交表的最后一行。

我可以毫无错误地保存脚本,但是当我将单元格从“PENDING”更改为“SUBMITTED”时,什么也没有发生......

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

标签: google-apps-scriptgoogle-sheets

解决方案


试试这种方式:

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

推荐阅读