Publiqué este script en otro sitio web pero no obtuve una respuesta que me funcionara. Guión al final de la publicación.
Estoy trabajando en una respuesta de formulario de hojas de Google que tendrá varias pestañas. Quiero ordenar cada respuesta según un menú desplegable en la columna 2 con el nombre de pestaña correspondiente y la casilla de verificación en la columna 1 está marcada. Mi código a continuación copia cada fila según la casilla de verificación sin ningún problema. Solo necesito agregar para la coincidencia desplegable y copiar en la pestaña correspondiente. Estaba pensando que una matriz podría funcionar, pero parece que no pude obtener el resultado adecuado. Gracias por la ayuda. Puedo aclarar mis problemas si es necesario.
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); } } }Enlace de hoja de muestra https://docs.google.com/spreadsheets/d/1befqsGQvbPfn0XTGrygLOGcrUIMrICUagJVH0S-2rDw/edit?usp=sharing
Se puede hacer de esta manera:
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); } }