google-apps-script google-sheets

google apps script - Crear y enviar hojas en la misma función



google-apps-script google-sheets (1)

Estoy tratando de crear un script simple con una función para crear nuevas hojas y una función principal para enviarlas por correo electrónico. Cuando intento llamar a la función para crear hojas dentro de la función principal, envía un correo electrónico a las hojas vacías. Aquí hay una muestra de lo que estoy haciendo:

function createnewsheets(mainfile, newsheetname) { mainfile.insertSheet(newsheetname); var sheet = mainfile.getSheetByName(newsheetname); var cell = sheet.getRange("A1"); cell.setValue("Hello"); return sheet; } function doall(){ var mainfile = SpreadsheetApp.openByUrl(''https://docs.google.com/...''); var sheet = createnewsheets(mainfile, "random"); ////code to send sheet as attachment in email/// }

El código completo está here .

Ahora, esto envía una hoja vacía, pero si primero ejecuta createnewsheets sin regresar y busca la hoja con el nombre en todo , funciona.

Pensé que podría ser una cuestión de esperar después de crear una hoja, así que también probé Utilities.sleep() pero eso no cambió nada.

Sería muy útil saber cómo puedo mejorar. Gracias por adelantado.


Google Apps Script aplica los cambios realizados en Google Sheet en lotes :

Los scripts comúnmente necesitan leer datos de una hoja de cálculo, realizar cálculos y luego escribir los resultados de los datos en una hoja de cálculo. Google Apps Script ya tiene una optimización incorporada, como el uso del almacenamiento en caché anticipado para recuperar lo que es probable que obtenga un script y el almacenamiento en caché de escritura para guardar lo que probablemente se establecerá.

Use SpreadsheetApp.flush() para "forzar" la aplicación de los cambios que realizó su script antes de enviar las hojas por correo electrónico.

Relacionado

  • ¿Por qué usamos SpreadsheetApp.flush () ;?