Risoluzione dei problemi

Anche lo sviluppatore più esperto scrive raramente il codice correttamente al primo tentativo, il che rende 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 di errore. Il messaggio è accompagnato da un numero di riga utilizzato per la risoluzione dei problemi. Esistono due tipi di errori di base 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 è che manca il carattere ) alla fine della quarta riga. Quando provi a salvare lo script, viene visualizzato il seguente errore:

Manca ) dopo l'elenco degli argomenti. (riga 4)

Questi tipi di errori sono in genere facili da risolvere, poiché vengono rilevati subito 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 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 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é non si tratta di un indirizzo email valido, durante l'esecuzione dello script viene visualizzato 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 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 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 non è temporaneamente disponibile. Attendi qualche istante e riprova a eseguire lo script.
  • Nello script è presente un errore che non ha un messaggio corrispondente. 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 su come cercare e inviare segnalazioni di bug, consulta la pagina relativa ai 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 visualizzato il prompt di autorizzazione per consentirti di autorizzare il progetto di 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 (ad esempio perché l'errore si verifica per un componente aggiuntivo che utilizzi), 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:

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

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

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

Gli amministratori dei 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 è il risultato di 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 il problema, 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 utilizzare Session.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 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.

La raccolta non è presente

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. Il motivo potrebbe essere che troppe persone stanno accedendo 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 e implementalo 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 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 Altro > Apri in una nuova scheda. La libreria mancante genera un messaggio di errore. Dopo aver trovato la libreria da aggiornare, esegui una delle seguenti azioni:
  • 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 dal tuo script, aggiorna la libreria secondaria nello script a una versione esistente.
    • Aggiorna la libreria in modo da utilizzare una versione diversa. Consulta Aggiornare una biblioteca.
    • Rimuovi la libreria dal progetto e dal codice dello 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 affinché aggiunga l'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 consente di eseguire ricerche e applicare filtri ai 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 verificare se si è verificata un'interruzione del servizio Google Workspace visualizzando la Dashboard dello stato di Google Workspace. Se al momento è in corso un'interruzione, 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 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, il che ti consente 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 a cui vuoi aggiungerlo. Fai clic sul cerchio a sinistra del numero di riga. L'immagine riportata di seguito mostra un esempio di un punto di interruzione aggiunto a uno script:

Aggiungere 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, si mette in pausa e mostra una tabella di informazioni di debug. Puoi utilizzare questa tabella per esaminare i dati, ad esempio i valori dei parametri e le informazioni memorizzate 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ù 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 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 utilizzando gli strumenti e le tecniche sopra elencati può risolvere una serie di problemi, ma potresti riscontrare problemi che richiedono un aiuto extra per essere risolti. Per informazioni su dove porre domande e segnalare bug, consulta la nostra pagina di assistenza.