Creazione e invio di fogli con la stessa funzione

Sto cercando di creare un semplice script con una funzione per creare nuovi fogli e una funzione principale per inviare via e-mail quei fogli. Quando provo a chiamare la funzione per creare i fogli all’interno della funzione principale, invia dei fogli vuoti. Ecco un esempio di ciò che sto facendo:

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/// } 

Il codice completo è qui .

Ora questo invia un foglio vuoto, ma se prima esegui createnewsheets senza tornare e recupera il foglio con il nome in doeverything , funziona.

Ho pensato che potesse essere un problema di attesa dopo aver creato un foglio, quindi ho provato anche Utilities.sleep() ma questo non ha cambiato nulla.

Sarebbe molto utile sapere come posso migliorare. Grazie in anticipo.

Lo script di Google Apps applica le modifiche apportate su Google Sheet in batch :

Gli script di solito devono leggere i dati da un foglio di calcolo, eseguire calcoli e quindi scrivere i risultati dei dati su un foglio di calcolo. Google Apps Script offre già alcune ottimizzazioni integrate, come l’utilizzo della cache di previsione per recuperare ciò che è probabile che uno script ottenga e scrivere nella cache per salvare ciò che è probabile che sia impostato.

Utilizzare SpreadsheetApp.flush() per “forzare” l’applicazione delle modifiche apportate allo script prima di inviare i fogli tramite e-mail.

Relazionato

  • Perché usiamo SpreadsheetApp.flush () ;?