I have a spread sheet that has several pages. (Working on, Missed, Submitted) When working with a row they have checkboxes to mark them to be moved based on the boxes checked. Submitted moved to submitted page and so on. When I check the box I get the error shown below.
TypeError: Cannot read property 'source' of undefined at onEdit(Code:9:17)
First part of the if statement checks the page the event took place, checks that the edit happened in the correct column, if yes move to correct page and delete row from active sheet. Below is the code im using
function onEdit(event) {
// assumes source data in sheet named Submited Routes source
// target sheet of move to named Sumbited Routes
// getColumn with check-boxes is currently set to column 9 or i
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSpreadsheet();
var r = event.source.getActiveRange();
if(s.getName() == "Working on" && r.getColumn() == 9 && r.getValue() == TRUE) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Submited Routes");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
} else if(s.getName() == "Submited Routes" && r.getColumn() == 9 && r.getValue() == FALSE) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Working on");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
function onCheck(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSpreadsheet();
var r = SpreadsheetApp.getActiveRange();
if(s.getName()== 'Working on' && r.getColumn() == 11 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Missed");
var target = targetSheet.getRange(targetSheet.getLastRow() +1,1);
s.getRange(row, 1,1,numColumns).moveTo(target);
s.deleteRow(row);
}else if(s.getName() == "Missed" && r.getColumn() == 11 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Working on");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
EDIT: The answer below is the prefect fix for my code.