Gscript
Gscript

Reputation: 17

How to move rows based on cell value to other sheets?

I have the script below that only works for the first condition. I can switch the conditions order and then the top one will work but not the bottom. Any ideas why?

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

Upvotes: 0

Views: 166

Answers (1)

doubleunary
doubleunary

Reputation: 19185

You can only have one active onEdit(e) simple trigger in a script project. To move rows based on two sets of criteria, you will need to combine the two functions into one.

I would recommend that you use a tried and tested solution such as the moveRowsFromSpreadsheetToSpreadsheet_ script. The code is almost 800 lines long so it is impractical to quote here, but it is simple enough to configure using the parameters section.

Upvotes: 1

Related Questions