I have 2 different sheets, the first is where all my data is stored and changes. On updating the first sheet it moves to the second sheet. I am trying to figure out if after the update, I can move a row from the second sheet to another tab in the second sheet based off of the data in column Q or col 17. Here is what I currently have, but it does not seem to be moving anything. Is this even possible?
function onUpdate() {
var sheetNameToWatch = "Raw Data";
var columnNumberToWatch = 17; // column A = 1, B = 2, etc.
var valueToWatch = ["Full", "Partial", "Process", "Conditional", "Fail", "Exemption"];
var sheetNameToMoveTheRowTo = (valueToWatch + " Certification");;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
Thanks.
Ok, I've updated the current script:
function onUpdate() {
var sourceSheet = "Raw Data";
var columnNumberToWatch = 17; // column A = 1, B = 2, etc.
var valueToWatch = ["Full", "Partial", "Process", "Conditional", "Fail", "Exemption"];
var sheetNameToMoveTheRowTo = (valueToWatch + " Certification");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() === sourceSheet && range.getColumn() === columnNumberToWatch && checkMatch(range.getValue(), valueToWatch) === true) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
function checkMatch(value, array) {
for (i in array) {
if (value === array[i]) {
return(true);
}
}
}
Alright,
I tried to specify a little more with it:
function onEdit() {
var sourceSheet = "Raw Data";
var columnNumberToWatch = 17; // column A = 1, B = 2, etc.
var valueToWatch = ["Full", "Partial", "Process", "Conditional", "Fail", "Exemption"];
var sheetNameToMoveTheRowTo = (valueToWatch + " Certification");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
var cert = range.getValue();
if (valueToWatch.indexOf(cert) === sourceSheet && range.getColumn() === columnNumberToWatch && checkMatch(range.getValue(), valueToWatch) === true) {
var sheetNameToMoveTheRowTo = (cert + " Certification");
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
function checkMatch(value, array) {
for (i in array) {
if (value === array[i]) {
return(true);
}
}
}
by defining cert and trying to define more clearly the array for valueToWatch.