I posted this script on another website but didn't get an answer that worked for me. Script at the end of post.
I am working on a google sheets form response that will have multiple tabs on it. I want to sort each response based on a dropdown in column 2 with corresponding tab name and checkbox in column 1 is checked. My code below copies each row based on checkbox without any problems. I just need to add for dropdown match and copy to that corresponding tab. I was thinking an array might work but I couldn't seem to get the proper outcome. Thanks for the help. I can clarify my issues if need be.
function onEdit(event) {
// getColumn with check-boxes is currently set to column 1 OR A
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Testing');
var r = event.source.getActiveRange();
// if(r.getColumn() == 2 && r.getValue() == "Page 1") {
if(r.getColumn() == 1 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Copied");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 2, 1, numColumns).copyTo(target, {contentsOnly:true});
s.deleteRow(row);
}
}
}
Sample sheet link https://docs.google.com/spreadsheets/d/1befqsGQvbPfn0XTGrygLOGcrUIMrICUagJVH0S-2rDw/edit?usp=sharing
It can be done this way:
function onEdit(event) {
// getColumn with check-boxes is currently set to column 1 OR A
var ss = event.source;
var s = ss.getSheetByName('Testing');
var r = event.source.getActiveRange();
if (r.getColumn() == 1 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Copied");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 2, 1, numColumns).copyTo(target, { contentsOnly: true });
var page = s.getRange(row, 2).getValue(); // get the sheet name from column B
var pageSheet = ss.getSheetByName(page); // target sheet
var target = pageSheet.getRange(pageSheet.getLastRow() + 1, 1); // target range
s.getRange(row, 2, 1, numColumns).copyTo(target, { contentsOnly: true }); // copy to the target
s.deleteRow(row);
ss.toast('Row ' + row + ' was copied to ' + page);
}
}