Estoy creando un formulario de envío en Hojas de cálculo de Google con Google Apps Script. El formulario está en una página, y los envíos se mueven a una segunda página oculta. Cuando los usuarios completan el formulario, presionan un botón en la página de envío para activar el script.
El problema con el que me encuentro es que cuando el usuario completa la última celda y luego hace clic en el botón, los datos que se ingresan en la última celda aún no parecen estar comprometidos con la página, por lo que no son tomados por el script (usando sheet_sub.getRange("C7").getValue(); ). Traté de activate() otra celda y flush() , pero eso no parece funcionar. Todo lo demás sobre el guión es funcional.
¿Cómo puedo asegurarme de que los datos se guarden en la hoja para poder acceder a ellos? Gracias de antemano por su ayuda.
Editar: Incluyendo el código a continuación
function submitNomination() { var sheet_sub = getSheet("Submission Form"); var sheet_list = getSheet("List of Nominations"); // Find last row in list var lastRow = sheet_list.getRange("A1").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); // Grab values from submission form var nominee = sheet_sub.getRange("C5:F5").getValue(); var nominator = sheet_sub.getRange("C6:F6").getValue(); var category = sheet_sub.getRange("C7:F7").getValue(); var reason = sheet_sub.getRange("C8:F12").getValue(); // Enter values into the list sheet_list.getRange('R'+(lastRow+1)+'C1').setValue(Utilities.formatDate(new Date(), "America/Detroit","yyyy-MM-dd HH:mm:ss")); sheet_list.getRange('R'+(lastRow+1)+'C2').setValue(nominee); sheet_list.getRange('R'+(lastRow+1)+'C3').setValue(nominator); sheet_list.getRange('R'+(lastRow+1)+'C4').setValue(reason); sheet_list.getRange('R'+(lastRow+1)+'C5').setValue(category); // Clear submission form sheet_sub.getRange("C5:F12").clearContent(); } function getSheet(sheetName){ var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); return sheet; }Piense en los usuarios que trabajan en la misma hoja de cálculo. Antes de que el usuario A confirme sus cambios, el usuario B no los verá en su versión de la hoja de cálculo, ni tendrá ningún poder para confirmar esos cambios.
Entonces, si desea que las modificaciones de los usuarios se puedan recuperar al hacer clic en el botón, la única forma es solicitar al usuario que confirme sus cambios antes de presionar el botón. Puede hacerlo, por ejemplo, con una alerta/mensaje que aparece al hacer clic en el botón y le pregunta al usuario si ha realizado los cambios antes de hacer clic en el botón.
Alternativamente, puede pensar en una implementación sin un botón.
Por ejemplo, puede publicar su secuencia de comandos como una aplicación web y pegar un hipervínculo a la URL de la aplicación web en una celda que actúa como un botón:
Esto puede parecer menos estético que un botón real; sin embargo, al hacer clic en la celda del botón, los últimos cambios del usuario se confirmarán automáticamente.