However, remember the debugger is your friend. I suggest you set a variable to src.getName(), set a breakpoint to the following line and inspect the value.
var nme = src.getName();
If it is not the name of the tab then you know that is the issue.
Strange though, I made a copy of your sheet and it seems to move rows to the Hired tab. It moves any one that is changed though, not just of it is marked Hired.
I added an check to see if the value is "Hired"
function onEdit(e) {
const src = e.source.getActiveSheet();
const r = e.range;
if (src.getName() !== "Open Roles" || r.columnStart !== 8 || r.rowStart == 1) return;
const dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hired");
if (src.getRange(r.rowStart,8).getValue() == "Hired") {
src.getRange(r.rowStart,1,1,8).moveTo(dest.getRange(dest.getLastRow()+1,1,1,8));
src.deleteRow(r.rowStart);
}
}
I reworked the code a bit, not sure if it will solve the undefined error but it is cleaner, I prefer one return whenever possible.
function onEdit(e) {
const src = e.source.getActiveSheet();
const r = e.range;
var sheetName = src.getName();
if (src.getName() == "Open Roles" && r.columnStart == 8 && r.rowStart !== 1) {
const dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hired");
if (src.getRange(r.rowStart,8).getValue() == "Hired") {
src.getRange(r.rowStart,1,1,8).moveTo(dest.getRange(dest.getLastRow()+1,1,1,8));
src.deleteRow(r.rowStart);
}
}
}
This script does not rely on the object "e" passed to onEdit()
function onEdit(e) {
//const src = e.source.getActiveSheet();
const src = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Open Roles");
Logger.log(src);
var activeRange = src.getActiveRange();
const currRow = activeRange.getRowIndex();
const currCol = activeRange.getColumn();
Logger.log(currRow);
Logger.log(currCol);
var sheetName = src.getName();
if (src.getName() == "Open Roles" && currCol == 8 && currRow !== 1) {
const dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hired");
if (src.getRange(currRow,8).getValue() == "Hired") {
src.getRange(currRow,1,1,8).moveTo(dest.getRange(dest.getLastRow()+1,1,1,8));
src.deleteRow(currRow);
}
}
}