Risoluzione dei problemi

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

Messaggi di errore

Quando lo script riscontra un errore, viene visualizzato un messaggio di errore. Il messaggio è accompagnato da un numero di riga utilizzato per la risoluzione dei problemi. Esistono due tipi di 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 gli errori 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 in questo caso è 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)

In genere questi tipi di errori sono facili da risolvere, poiché vengono individuati immediatamente e in genere hanno cause semplici. Non puoi salvare un file contenente errori di sintassi, il che significa che nel progetto viene salvato solo il 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 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 codice è formattato correttamente, ma stiamo passando il valore "john" per l'indirizzo email quando chiamiamo MailApp.sendEmail. Poiché questo indirizzo email non è valido, durante l'esecuzione dello script viene visualizzato il seguente errore:

Indirizzo email non valido: mario (riga 5)

Ciò che rende più difficile la risoluzione di questi errori è che spesso i dati trasferiti in una funzione non sono scritti nel codice, ma estratti da un foglio di lavoro, un modulo o un'altra origine dati esterna. L'utilizzo delle tecniche di debug riportate di seguito può aiutarti a identificare la causa di questi errori.

Errori comuni

Di seguito è riportato un elenco di errori comuni e delle 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 gli account consumer, di dominio e Premier e sono soggette a modifiche in qualsiasi momento senza un precedente annuncio da parte di Google. Puoi visualizzare i limiti di quota per varie 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 di Google non è al momento disponibile. Attendi qualche istante e riprova a eseguire lo script.
  • Nello script è presente un errore che non ha un messaggio di errore corrispondente. Prova a eseguire il debug dello script per vedere se riesci a isolare il problema.
  • Questo errore è causato da un bug in Google Apps Script. Per istruzioni su come cercare e inviare segnalazioni di bug, consulta la sezione Bug. Prima di inviare un nuovo bug, cerca se altri l'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 uno script viene eseguito nell'editor di script o da una voce di menu personalizzata, viene visualizzata una finestra di dialogo di autorizzazione all'utente. Tuttavia, quando uno script viene eseguito da un trigger, incorporato con una pagina di Google Sites o eseguito come servizio, non è possibile visualizzare la finestra di dialogo e viene visualizzato questo errore.

Per autorizzare lo script, apri l'editor di script ed esegui una funzione qualsiasi. Viene visualizzata la richiesta di autorizzazione che ti consente di autorizzare il progetto di script. Se lo script contiene nuovi servizi non autorizzati, è necessario autorizzarlo nuovamente.

Questo errore è spesso causato da attivatori 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 ad attivarsi e causare questo errore, puoi rimuoverli nel seguente modo:

  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 di componenti aggiuntivi problematici anche disinstallando il componente aggiuntivo.

Accesso negato: DriveApp o Il criterio del dominio ha disattivato le app per Drive di terze parti

Gli amministratori di Google Workspace domini possono disattivare l'API Drive per il proprio dominio, impedendo così agli utenti di installare e utilizzare le app 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 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 quegli utenti anche se l'API Drive è disabilitata nel dominio.

Lo script non è autorizzato a ottenere 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 al numero 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 questo avviso viene segnalato, 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 nessuno dei due metodi.
  • Se sei un Google Workspace cliente che riceve di recente questo avviso da un attivatore installabile, assicurati che il trigger sia in esecuzione come utente all'interno della tua organizzazione.

Libreria mancante

Se aggiungi una libreria molto diffusa allo script, potresti ricevere un messaggio di errore che ne indica l'assenza, anche se la libreria è elencata come dipendenza per lo script. Il motivo potrebbe essere che troppe persone accedono alla raccolta 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 ed eseguine il deployment come libreria dal tuo account. Assicurati di aggiornare la dipendenza nello script originale alla nuova libreria anziché a 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 cui è stato eseguito il deployment dello script è stata eliminata. Per aggiornare la versione di cui è stato eseguito il deployment dello script, consulta Modificare un deployment con versione.
  • La versione di una libreria utilizzata dallo script è stata eliminata. Per verificare quale libreria manca, accanto al nome della libreria fai clic su Altro > 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 utilizzata dallo script include un'altra libreria che utilizza una versione eliminata. Intraprendi 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 in modo che ne utilizzi una versione diversa. Consulta la sezione Aggiornare una raccolta.
    • Rimuovi la libreria dal codice e dal progetto di script. Consulta la sezione Rimuovere una raccolta.

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

Se viene visualizzato 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 a uno script, 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 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ù lieve 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 durante l'esecuzione di un progetto di script. Google Apps Script prevede due metodi per la registrazione delle informazioni: il servizio di Cloud Logging e i servizi di logger e console di base integrati nell'editor di Apps Script.

Per ulteriori dettagli, consulta la guida a 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 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 di Google Cloud Platform.

Esecuzioni

Ogni volta che esegui uno script, Apps Script crea un record dell'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 in corso

Sebbene rari, a volte determinati servizi Google Workspace (come Gmail o Drive) presentano 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 del servizio, puoi attendere che venga risolta o richiedere ulteriore assistenza nel Centro assistenza Google Workspace o nella documentazione relativa ai 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 si interrompe 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 della riga a cui vuoi aggiungere il punto di interruzione. A sinistra del numero di riga, 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 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, utilizza i pulsanti "Passaggio", "Passaggio" ed "Esci" nella parte superiore del riquadro Debugger. che ti consentono di eseguire lo script una riga alla volta e di esaminare come cambiano i 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 sono supportati per Apps Script, per i componenti aggiuntivi o per le app web.

  • Se apri l'editor di Apps Script dopo aver eseguito l'accesso a più di un 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 contenente 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 contenente il componente aggiuntivo o l'app web a cui vuoi accedere.

Richiesta di aiuto

Eseguire il debug di un problema con gli strumenti e le tecniche elencati sopra può risolvere una serie di problemi, ma potrebbero verificarsi problemi che richiedono un aiuto in più. Consulta la nostra pagina di assistenza per informazioni su dove porre domande e segnalare bug.