Risoluzione dei problemi

Anche lo sviluppatore più esperto raramente scrive correttamente il codice al primo tentativo, rendendo la risoluzione dei problemi una parte importante del processo di sviluppo. In questa sezione illustreremo alcune tecniche che possono aiutarti a trovare, comprendere ed eseguire il debug degli errori nei tuoi script.

Messaggi di errore

Quando lo script rileva un errore, viene visualizzato un messaggio. Il messaggio è accompagnato da un numero di riga utilizzato per la risoluzione dei problemi. Esistono due tipi base di errori visualizzati in questo modo: errori di sintassi ed errori di runtime.

Errori di sintassi

Gli errori di sintassi sono causati dalla scrittura di codice che non segue la grammatica di JavaScript e vengono rilevati non appena provi a salvare lo script. Ad esempio, il seguente snippet di codice contiene un errore di sintassi:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

Il problema di sintassi qui è un carattere ) mancante alla fine della quarta riga. Quando provi a salvare lo script, viene visualizzato il seguente errore:

) mancante dopo l'elenco di argomenti. (riga 4)

Questi tipi di errori sono in genere di facile risoluzione, in quanto vengono individuati immediatamente e in genere hanno cause semplici. Non puoi salvare un file che contiene errori di sintassi, il che significa che nel tuo progetto viene salvato solo codice valido.

Errori di runtime

Questi errori sono causati dall'utilizzo non corretto di una funzione o di una classe e possono essere rilevati solo dopo l'esecuzione dello script. Ad esempio, il seguente codice causa un errore di runtime:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

Il formato del codice è corretto, ma passiamo il valore "john" per l'indirizzo email quando chiamiamo MailApp.sendEmail. Poiché questo non è un indirizzo email valido, durante l'esecuzione dello script viene generato il seguente errore:

Indirizzo email non valido: mario (riga 5)

Questi errori sono più difficili da risolvere perché spesso i dati trasmessi in una funzione non sono scritti nel codice, ma estratti da un foglio di lavoro, da un modulo o da un'altra origine dati esterna. Le tecniche di debug riportate di seguito possono aiutarti a identificare la causa di questi errori.

Errori comuni

Di seguito è riportato un elenco di errori comuni e le relative cause.

Servizio richiamato troppe volte: <nome azione>

Questo errore indica che hai superato la quota giornaliera per una determinata azione. Ad esempio, potresti riscontrare questo errore se invii troppe email in un solo giorno. Le quote sono impostate a diversi livelli per consumer, dominio e account Premier e sono soggette a modifica in qualsiasi momento senza preavviso da parte di Google. Puoi visualizzare i limiti di quota per diverse azioni nella documentazione sulle quote di Apps Script.

Server non disponibile o Si è verificato un errore del server.Riprova.

Esistono alcune possibili cause di questi errori:

  • Un server o un sistema Google è temporaneamente non disponibile. Attendi qualche istante e prova a eseguire di nuovo lo script.
  • Lo script contiene un errore al quale non è associato un messaggio di errore. Prova a eseguire il debug dello script e verifica se riesci a isolare il problema.
  • Questo errore è causato da un bug di Google Apps Script. Per istruzioni sulla ricerca e sull'invio di segnalazioni di bug, consulta la pagina Bug. Prima di inviare un nuovo bug, cerca se altri lo hanno già segnalato.

Per eseguire questa azione è necessaria l'autorizzazione.

Questo errore indica che lo script non dispone dell'autorizzazione necessaria per l'esecuzione. Quando viene eseguito uno script nell'editor di script o da una voce di menu personalizzata, all'utente viene mostrata una finestra di dialogo di autorizzazione. Tuttavia, quando uno script viene eseguito da un trigger, incorporato in una pagina di Google Sites o eseguito come servizio, la finestra di dialogo non può essere visualizzata e viene mostrato questo errore.

Per autorizzare lo script, apri l'editor di script ed esegui una funzione. Viene visualizzata la richiesta di autorizzazione in modo che tu possa autorizzare il progetto dello script. Se lo script contiene nuovi servizi non autorizzati, devi autorizzare di nuovo lo script.

Questo errore è spesso causato da attivatori che vengono attivati prima che l'utente li abbia autorizzati. Se non hai accesso al progetto dello script (perché l'errore si verifica per un componente aggiuntivo che utilizzi, ad esempio), in genere puoi autorizzare lo script utilizzando di nuovo il componente aggiuntivo. Se un attivatore continua ad attivarsi e causa questo errore, puoi rimuoverli seguendo questi passaggi:

  1. A sinistra del progetto Apps Script, fai clic su Trigger .
  2. A destra dell'attivatore da rimuovere, fai clic su Altro > Elimina trigger.

Puoi anche rimuovere gli attivatori problematici dei componenti aggiuntivi disinstallando il componente aggiuntivo.

Accesso negato: DriveApp o Nel criterio del dominio sono state disattivate le app Drive di terze parti

Gli amministratori di Google Workspace domini hanno la possibilità di disattivare l'API Drive per il proprio dominio, impedendo agli utenti di installare e utilizzare le app Google Drive. Inoltre, questa impostazione impedisce agli utenti di utilizzare i componenti aggiuntivi di Apps Script che utilizzano il servizio Drive o il servizio avanzato di Drive (anche se lo script è stato autorizzato prima della disattivazione dell'API Drive da parte dell'amministratore).

Tuttavia, se un componente aggiuntivo o un'app web che utilizza il servizio Drive viene pubblicata per l'installazione a livello di dominio e viene installata dall'amministratore per alcuni o tutti gli utenti del dominio, lo script funziona per questi utenti anche se l'API Drive è disattivata nel dominio.

Lo script non è autorizzato a recuperare l'identità dell'utente attivo.

Indica che l'identità e l'indirizzo email dell'utente attivo non sono disponibili per lo script. Questo avviso deriva da una chiamata a Session.getActiveUser(). Può anche risultare da una chiamata a Session.getEffectiveUser() se lo script è in esecuzione in una modalità di autorizzazione diversa da AuthMode.FULL. Se viene segnalato questo avviso, le chiamate successive a User.getEmail() restituiscono solo "".

Esistono diversi modi per risolvere questo avviso, a seconda della modalità di autorizzazione in cui viene eseguito lo script. La modalità di autorizzazione è esposta nelle funzioni attivate come proprietà authMode del parametro evento e.

  • In AuthMode.FULL, valuta la possibilità di utilizzare Session.getEffectiveUser().
  • In AuthMode.LIMITED, assicurati che il proprietario abbia autorizzato lo script.
  • In altre modalità di autorizzazione, evita di chiamare uno dei due metodi.
  • Se sei un Google Workspace cliente che stai riscontrando di recente questo avviso per un attivatore installabile, assicurati che l'attivatore sia in esecuzione come utente all'interno della tua organizzazione.

Raccolta mancante

Se aggiungi una libreria popolare allo script, potresti ricevere un messaggio di errore che ti comunica che non è presente, anche se la libreria è elencata come dipendenza per lo script. Questo potrebbe essere dovuto al fatto che troppe persone accedono alla biblioteca contemporaneamente. Per evitare questo errore, prova una delle seguenti soluzioni:

  • Copia e incolla il codice della libreria nello script e rimuovi la dipendenza della libreria.
  • Copia lo script della libreria e implementalo come libreria dal tuo account. Assicurati di aggiornare la dipendenza nello script originale con la nuova libreria anziché quella pubblica.

Si è verificato un errore a causa di una versione mancante della libreria o di una versione del deployment. Codice di errore non trovato

Questo messaggio di errore indica una delle seguenti situazioni:

  • La versione dello script di cui è stato eseguito il deployment è stata eliminata. Per aggiornare la versione di cui è stato eseguito il deployment dello script, consulta Modificare un deployment con controllo delle versioni.
  • La versione di una libreria utilizzata dallo script è stata eliminata. Per controllare quale libreria manca, fai clic su Altro accanto al nome della libreria > Apri in una nuova scheda. La libreria mancante restituisce un messaggio di errore. Dopo aver trovato la libreria da aggiornare, esegui una delle seguenti azioni:
  • Lo script di una libreria utilizzato dal tuo script include un'altra libreria che utilizza una versione eliminata. Esegui una delle seguenti azioni:
    • Se disponi dell'accesso in modifica alla libreria utilizzata dallo script, aggiorna la libreria secondaria nello script a una versione esistente.
    • Aggiorna la libreria per utilizzare una versione diversa. Consulta Aggiornare una libreria.
    • Rimuovi la libreria dal codice e dal progetto di script. Vedi Rimuovere una raccolta.

Error 400: invalid_scope quando chiami l'API Google Chat con il servizio avanzato

Se riscontri Error 400: invalid_scope con il messaggio di errore Some requested scopes cannot be shown, significa che non hai specificato alcun ambito di autorizzazione nel file appsscript.json del progetto Apps Script. Nella maggior parte dei casi, Apps Script determina automaticamente gli ambiti necessari per uno script, ma quando utilizzi il servizio avanzato di Chat, devi aggiungere manualmente gli ambiti di autorizzazione utilizzati dallo script al file manifest del tuo progetto Apps Script. Consulta Impostazione di ambiti espliciti.

Per risolvere l'errore, aggiungi gli ambiti di autorizzazione appropriati al file appsscript.json del progetto Apps Script come parte dell'array oauthScopes. Ad esempio, per chiamare il metodo spaces.messages.create, aggiungi quanto segue:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Debug

Non tutti gli errori causano la visualizzazione di un messaggio di errore. Potrebbe esserci un errore più sottile in cui il codice è tecnicamente corretto e può essere eseguito, ma i risultati non sono quelli previsti. Di seguito sono riportate alcune strategie per gestire queste situazioni e analizzare ulteriormente uno script che non viene eseguito nel modo previsto.

Logging

Durante il debug spesso è utile registrare le informazioni come esecuzioni di progetti di script. Google Apps Script prevede due metodi per la registrazione delle informazioni: il servizio Cloud Logging e i servizi di log e console di base integrati nell'editor di Apps Script.

Per ulteriori dettagli, consulta la Guida al logging.

Error Reporting

Le eccezioni che si verificano a causa di errori di runtime vengono registrate automaticamente utilizzando il servizio Google Cloud Error Reporting. Questo servizio ti consente di cercare e filtrare i messaggi di eccezione creati dal progetto di script.

Per accedere a Error Reporting, vedi Visualizzare i log e i report sugli errori di Cloud nella console di Google Cloud.

Esecuzioni

Ogni volta che esegui uno script, Apps Script registra l'esecuzione, inclusi i log di Cloud. Questi record possono aiutarti a comprendere quali azioni sono state eseguite dallo script.

Per visualizzare le esecuzioni dello script nel progetto Apps Script, fai clic su Esecuzioni a sinistra.

Controllo dello stato del servizio Apps Script

Anche se rari, a volte determinati servizi Google Workspace (come Gmail o Drive) riscontrano problemi temporanei che possono portare a interruzioni del servizio. In questo caso, i progetti Apps Script che interagiscono con questi servizi potrebbero non funzionare come previsto.

Puoi verificare se si è verificata un'interruzione del servizio Google Workspace visualizzando la Dashboard dello stato di Google Workspace. Se si sta verificando un'interruzione, attendi che venga risolta o richiedi ulteriore assistenza nel Centro assistenza Google Workspace o nella documentazione sui problemi noti di Google Workspace.

Utilizzare il debugger e i punti di interruzione

Per individuare i problemi nello script, puoi eseguirlo in modalità di debug. Quando viene eseguito in modalità di debug, uno script viene messo in pausa quando raggiunge un punto di interruzione, ovvero una riga evidenziata nello script che ritieni possa avere un problema. Quando uno script viene messo in pausa, viene visualizzato il valore di ogni variabile in quel momento, consentendoti di esaminare il funzionamento interno di uno script senza dover aggiungere molte istruzioni di logging.

Aggiungi un punto di interruzione

Per aggiungere un punto di interruzione, passa il mouse sopra il numero di riga della riga a cui vuoi aggiungerlo. A sinistra della linea del numero, fai clic sul cerchio. L'immagine seguente mostra un esempio di punto di interruzione aggiunto a uno script:

Aggiungi un punto di interruzione

Eseguire uno script in modalità di debug

Per eseguire lo script in modalità di debug, fai clic su Debug nella parte superiore dell'editor.

Prima che lo script esegua la riga con il punto di interruzione, viene messo in pausa e viene visualizzata una tabella di informazioni di debug. Puoi utilizzare questa tabella per esaminare dati come i valori dei parametri e le informazioni archiviate negli oggetti.

Per controllare la modalità di esecuzione dello script, nella parte superiore del riquadro Debugger, utilizza i pulsanti "Accedi", "Passa" e "Esci". In questo modo puoi eseguire lo script una riga alla volta e controllare come i valori cambiano nel tempo.

Problemi con più Account Google

Se hai eseguito l'accesso a più Account Google contemporaneamente, potresti avere problemi di accesso ai componenti aggiuntivi e alle app web. L'accesso multiplo o l'accesso a più Account Google contemporaneamente non è supportato per Apps Script, i componenti aggiuntivi o le app web.

  • Se apri l'editor di Apps Script dopo aver eseguito l'accesso a più account, Google ti chiede di scegliere l'account con cui vuoi procedere.

  • Se apri un'app web o un componente aggiuntivo e riscontri problemi di accesso multiplo, prova una delle seguenti soluzioni:

    • Esci da tutti i tuoi Account Google e accedi solo a quello che contiene il componente aggiuntivo o l'app web a cui desideri accedere.
    • Apri una finestra di navigazione in incognito in Google Chrome o una finestra di navigazione privata equivalente e accedi all'Account Google contenente il componente aggiuntivo o l'app web a cui vuoi accedere.

Richiesta di aiuto

Il debug di un problema con gli strumenti e le tecniche sopra elencati può risolvere una serie di problemi, ma anche alcuni problemi potrebbero richiedere un aiuto aggiuntivo per essere risolti. Consulta la nostra pagina di assistenza per informazioni su dove porre domande e segnalare bug.