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 si tenta di 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 è che manca il carattere )
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 errato di una funzione o di una classe e possono essere rilevati solo dopo l'esecuzione dello script. Ad esempio, il seguente codice provoca 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 codice è formattato correttamente, ma stiamo passando 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: john (riga 5)
Ciò che rende più difficile la risoluzione di questi errori è che spesso i dati che passi a una funzione non sono scritti nel codice, ma vengono estratti da un foglio di lavoro, un modulo o un'altra origine dati esterna. L'utilizzo delle tecniche di debugging riportate di seguito può 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 singolo giorno. Le quote sono impostate su livelli diversi per gli account consumer, di dominio e premier e sono soggette a modifiche in qualsiasi momento senza preavviso da parte di Google. Puoi visualizzare i limiti di quota per varie azioni nella documentazione relativa alle 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 riprova a eseguire lo script.
- Lo script contiene un errore al quale non è associato un messaggio di errore. Prova a eseguire il debug dello script e vedi se riesci a isolare il problema.
- Esiste un bug in Google Apps Script che causa questo errore. Per istruzioni sulla ricerca e sull'invio di segnalazioni di bug, consulta la pagina Bug. Prima di segnalare un nuovo bug, cerca per vedere se altri lo hanno già segnalato.
Per eseguire questa azione è richiesta l'autorizzazione.
Questo errore indica che allo script manca l'autorizzazione necessaria per l'esecuzione. Quando uno script viene eseguito nell'editor di script o da un elemento di menu personalizzato, all'utente viene presentata una finestra di dialogo di autorizzazione. Tuttavia, quando uno script viene eseguito da un attivatore, incorporato in una pagina di Google Sites o eseguito come servizio, la finestra di dialogo non può essere visualizzata e viene visualizzato 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 autorizzarlo di nuovo.
Questo errore è spesso causato da trigger che vengono attivati prima che l'utente li abbia autorizzati. Se non hai accesso al progetto di 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 a essere attivato e causa questo errore, puoi rimuoverlo come segue:
- A sinistra del progetto di Apps Script, fai clic su Attivatori .
- A destra dell'attivatore da rimuovere, fai clic su Altro > Elimina trigger.
Puoi anche rimuovere gli attivatori dei componenti aggiuntivi problematici disinstallando il componente aggiuntivo.
Accesso negato: DriveApp o Nel criterio del dominio sono state disattivate le app Drive di terze parti
Gli amministratori dei Google Workspace domini hanno la possibilità di disattivare l'API Drive per il loro dominio, impedendo ai propri utenti di installare e utilizzare le app di Google Drive. Questa impostazione impedisce inoltre agli utenti di utilizzare i componenti aggiuntivi di Apps Script che utilizzano il servizio Drive o il servizio Drive avanzato (anche se lo script è stato autorizzato prima che l'amministratore disattivasse l'API Drive).
Tuttavia, se un componente aggiuntivo o un'app web che utilizza il servizio Drive viene pubblicato per la installazione a livello di dominio e viene installato 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'email dell'utente attivo non sono disponibili per lo script. Questo avviso deriva da una chiamata a
Session.getActiveUser()
.
Può anche essere il risultato di una chiamata a
Session.getEffectiveUser()
se lo script viene eseguito 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 e
parametro evento.
- In
AuthMode.FULL
, valuta la possibilità di utilizzareSession.getEffectiveUser()
instead. - 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 riscontra per la prima volta questo avviso da 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 informa che manca, 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 dalla 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 Not_Found
Questo messaggio di errore indica una delle seguenti condizioni:
- La versione di script di cui è stato eseguito il deployment è stata eliminata. Per aggiornare la versione di script di cui è stato eseguito il deployment, consulta Modificare un deployment con versione.
- La versione di una libreria utilizzata dallo script è stata eliminata. Per controllare quale biblioteca manca, accanto al nome della raccolta fai clic su > 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:
- Aggiorna la libreria per utilizzare una versione diversa. Consulta Aggiornare una libreria.
- Rimuovi la libreria eliminata dal codice e dal progetto di script. Vedi Rimuovere una raccolta.
Altro
- Lo script di una libreria utilizzata dal tuo script include un'altra biblioteca 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 dello 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.
Errore 400: invalid_scope durante la chiamata all'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 di Apps Script. Nella maggior parte dei casi,
Apps Script determina automaticamente gli ambiti di cui uno script ha bisogno,
ma quando utilizzi il servizio avanzato di Chat, devi aggiungere manualmente
gli ambiti di autorizzazione utilizzati dallo script al
file manifest del progetto Apps Script. Consulta
Impostare ambiti espliciti.
Per risolvere l'errore, aggiungi gli ambiti di autorizzazione appropriati al file appsscript.json
del progetto Apps Script nell'array oauthScopes
. Ad esempio, per chiamare il metodo
spaces.messages.create
, aggiungi quanto segue:
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
Le chiamate UrlFetch a <URL> non sono consentite dall'amministratore
Gli amministratori di Google Workspace possono attivare una lista consentita nella Console di amministrazione per controllare a quali domini esterni puoi accedere tramite Apps Script.
Per risolvere l'errore, contatta l'amministratore per richiedere l'aggiunta dell'URL alla lista consentita.
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. Ecco alcune strategie per gestire queste situazioni ed esaminare ulteriormente uno script che non funziona come previsto.
Logging
Durante il debug, è spesso utile registrare le informazioni durante l'esecuzione di un progetto di script. Google Apps Script dispone di due metodi per registrare le informazioni: il servizio di logging di Cloud e i servizi di console e logger più di base integrati nell'editor di Apps Script.
Per ulteriori dettagli, consulta la guida alla registrazione.
Error Reporting
Le eccezioni che si verificano a causa di errori di runtime vengono registrate automaticamente utilizzando il servizio di segnalazione degli errori di Google Cloud. Questo servizio ti consente di cercare e filtrare i messaggi di eccezione creati dal progetto di script.
Per accedere a Error Reporting, consulta Visualizzare i log di Cloud e i report sugli errori nella console della piattaforma Google Cloud.
Esecuzioni
Ogni volta che esegui uno script, Apps Script registra l'esecuzione, inclusi i log di Cloud. Questi record possono aiutarti a capire 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 raramente, a volte servizi Google Workspace specifici (come Gmail o Drive) riscontrano problemi temporanei che possono causare interruzioni del servizio. In questi casi, i progetti Apps Script che interagiscono con questi servizi potrebbero non funzionare come previsto.
Puoi controllare 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 potrebbe presentare un problema. Quando uno script viene messo in pausa, viene visualizzato il valore di ogni variabile in quel momento, consentendo di ispezionare il funzionamento interno di uno script senza dover aggiungere molte istruzioni di logging.
Aggiungere 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 riportata di seguito mostra un esempio di un punto di interruzione aggiunto a uno script:
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, si mette in pausa e mostra 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 l'esecuzione dello script, nella parte superiore del riquadro del debugger, utilizza i pulsanti "Passa al livello precedente", "Passa oltre" e "Esegui il rientro". Ti consentono di eseguire lo script una riga alla volta e di controllare la variazione dei valori nel tempo.
Problemi con più Account Google
Se hai eseguito l'accesso a più Account Google contemporaneamente, potresti avere difficoltà ad accedere 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 vuoi accedere.
- Apri una finestra di navigazione in incognito in Google Chrome o una finestra di navigazione privata equivalente e accedi all'Account Google che contiene 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 in più per essere risolti. Consulta la nostra pagina di assistenza per informazioni su dove porre domande e segnalare bug.