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

时间:2014-12-12 22:20:40

标签: javascript google-apps-script

我正在使用Gdocs电子表格来处理作业队列。

我想知道一行及其所有内容(来自A列:AS)是如何从" Live WIP Jobs" (sheet1)Tab to to" Delivered Jobs" (Sheet2)标签将其标记为"已交付"在专栏" AP"。

通常它会在sheet1中标记为WIP。

在将其标记为Delivered时,我希望将该行复制到Sheet2并将其从sheet1中删除。

附加表格以供参考

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

1 个答案:

答案 0 :(得分:0)

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

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

中的信息

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