首页 > 解决方案 > 如何将基于单元格值的行移动到其他工作表?

问题描述

我有下面的脚本,它只适用于第一个条件。我可以切换条件顺序,然后顶部的将起作用,但底部的不起作用。任何想法为什么?

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Master" && r.getColumn() == 16 && r.getValue() == "Yes") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Complete");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Master" && r.getColumn() == 16 && r.getValue() == "No") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Late");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

标签: google-apps-scriptgoogle-sheets

解决方案


脚本项目中只能有一个活动的onEdit(e) 简单触发器。要根据两组条件移动行,您需要将这两个函数合二为一。

我建议您使用久经考验的解决方案,例如moveRowsFromSpreadsheetToSpreadsheet_脚本。代码将近 800 行,因此在这里引用是不切实际的,但使用参数部分进行配置很简单。


推荐阅读