根据条件将行从一个工作表复制到另一个工作表

Copy Rows from a Sheet to another sheet based on Criteria

本文关键字:工作 一个 复制 另一个 条件      更新时间:2023-09-26

我正在使用 Gdocs 电子表格作为作业队列。

我想知道如何通过在"AP"列中将其标记为"已交付"来将行及其所有内容(来自 A:AS 列)从"实时 WIP 作业"(工作表 1)选项卡移动到"已交付作业"(Sheet2)选项卡。

通常,它会在工作表 1 中标记为 WIP。

在将其标记为已交付时,我希望将该行复制到 Sheet2 并将其从工作表 1 中删除。

附表供参考

https://docs.google.com/spreadsheets/d/1gZYni8SGUa4Ohu3BIOxJh2bQSUqQh_5Q3epDidP574E/edit#gid=1557156093

我也尝试了以下脚本..但它不起作用并获取错误:

function CopyRowsOnConditions() {
  // assumes source data in sheet named Live WIP Jobs
  // target sheet of move to named Delivered
  // test column with Delivered/WIP is col AP or 42
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var numRows = sheet.getDataRange().getNumRows(); 
  var source = sheet.getRange(2, 42, numRows); 
  if(s.getName() == "Live WIP Jobs" && r.getColumn() == 42 && r.getValue() == "Delivered"){
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Delivered");
    if(targetSheet.getLastRow() == targetSheet.getMaxRows()) {
      targetSheet.insertRowsAfter(targetSheet.getLastRow(), 20); //inserts 20 rows after last used row
    }
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
} 

检查脚本中的代码(您发布的代码不完整) 我注意到您正在使用变量"event"创建变量"r"和"s"。

当你有一个事件(例如onEdit)时,函数接收一个参数事件,然后你可以使用它。 以下是这些事件中的信息 https://developers.google.com/apps-script/guides/triggers/events

如果要使用事件,请相应地更改代码,如文档中所述。

相关文章: