JavaScript, HTML, CSS e... !
7 commenti

Lista dei messaggi di errore frequenti e relative soluzioni

Google Apps Script: errori frequenti e soluzioni

Chiunque abbia provato a giocare con Google Apps Script mettendo direttamente mano al codice per la realizzazione di qualche applicativo si sarà senz'altro imbattuto in mesaggi di errore, mostrati dall'editor di script, talvolta facile da risolvere altre volte un po' meno.

Durante le mie attività di sviluppo ho cercato di raccogliere i vari messaggi di errore con i quali mi sono dovuto confrontare per correggerli al fine di creare situazioni impeccabili per l'esecuzione degli script, ed all'interno di appsscript.it ho creato articoli dedicati a ciascuno di essi proponendo la soluzione che nel mio caso è stata efficace. In questo thread ho cercato di radunarli in modo che possa essere utile per agevolare la ricerca di una determinata soluzione.

Sicuramente ce ne sono molti altri così come ci sono soluzioni alternative per correggerli che possono essere più funzionali in talune circostanze, per questo motivo invito tutti i lettori a segnalare nei commenti di questo articolo eventuali altri errori incontrati e la strada percorsa per risolverli.

Se sei interessato a come identificare e risolvere gli errori in Google Apps Script puoi trovare tutta una serie di informazioni utili con immagini chiare ed esemplificative nel mio libro "Punta in alto con... Google Apps Script":

Troverai tra le altre cose informazioni su come effettuare un corretto debug in Apps Script, quali:

- un esempio completo su errori sintattici, logici e semantici sul quale effettuare i propri test;
- debug, log e trascrizione esecuzione;
- gli strumenti, dettagliati icona per icona, per scovare gli errori più insidiosi;
- i breakpoint;
- esecuzione di istruzioni e routine;
- stackdriver logging e stackdriver error reporting;
- e molto altro!

...E QUESTO È SOLO QUANTO RIFERITO ALL'IDENTIFICAZIONE DI ERRORI E ALL'USO DEL DEBUG DI APPS SCRIPT!

ACQUISTA ORA IL LIBRO SU AMAZON:

punta in alto con google apps script libro italiano

Se sei pronto a diventare un esperto nella programmazione in Google Apps Script non posso fare altro che augurarti una buona lettura e soprattutto... Buon divertimento!

 

Di seguito la lista dei messaggi di errore frequenti e relative soluzioni:

Error on line 1: XML document structures must start and end within the same entity
La struttura del documento XML deve iniziare e terminare con la stessa entità

Exceeded maximum execution time
Tempo massimo di esecuzione superato

Service error: Spreadsheets
Errore del servizio Spreadsheet

TypeError: String may not be invoked as a function
Una stringa non può essere invocata come una funzione

The coordinates or dimensions of the range are invalid
Le coordinate o le dimensioni dell'intervallo non sono valide

Those columns are out of bounds
Le colonne sono fuori dai limiti

Those rows are out of bounds
Le righe sono fuori dai limiti

Illegal character
Carattere non consentito

Timed out waiting for user response
Il tempo di attesa di risposta dell'utente è scaduto

Failed to establish a database connection. Check connection string, username and password
Impossibile stabilire una connessione di database. Controllare la stringa di connessione, il nome utente e la password

Exceeded maximum stack depth
Superato il limite massimo di profondità dello stack

Missing name after . operator
Nome mancante dopo l'operatore .

This action would increase the number of cells in the workbook above the limit of 2000000 cells
Questa azione incrementerà il numero di celle nel foglio di lavoro oltre il limite di 2000000

ReferenceError: 'miavariabile' is not defined
La variabile 'nome_variabile' non è definita

Server not available
Server non disponibile in Google Apps Script

DNS error: https://undefined
Errore DNS per l'indirizzo https://undefined

Cannot call SpreadsheetApp.getUi() from this context
SpreadsheetApp.getUi() non può essere chiamato da questo contesto

The script completed but did not return anything
Manca il return alla funzione

Script function not found: doGet
La funzione doGet() non è stata trovata

Authorization is required to perform that action
Per eseguire questa azione è richiesta l'autorizzazione

The script completed but the returned value is not a supported return type
Lo script è stato completato ma il valore restituito è di tipo non supportato

ReferenceError: "DocsList" not Defined
ReferenceError: "DocsList" non Definito

ReferenceError: 'Analytics' non definito (messaggio analogo a quello relativo a DocsList ma diversa motivazione)
ReferenceError: 'Analytics' is not defined

Cannot convert Array to Object[][]
Impossibile convertire Array in Object[][]

Invalid value at 'requests[0].create_sheets_chart.chart_id' (TYPE_INT32), 'u1800143865988'
Il valore dell'id del grafico non è un INT32 valido

Invalid requests[0].createSheetsChart: The page (SLIDES_API842162797_13) could not be found
Richiesta createSheetsChart non valida: la slide non è stata trovata

Invalid requests[0].createSheetsChart: The object ID (presentationChartId) should be unique among all pages and page elements
Richiesta non valida: l'id dell'oggetto deve essere unico in tutte le pagine ed elementi

Missing attachment URL
URL dell'allegato mancante

Quota Error: User Rate Limit Exceeded
Quota limite per l'utente superata

Invalid argument: q
Argomento non valido: q
Contiene anche: Impossibile trovare il metodo searchFolders()

Selected dimensions and metrics cannot be queried together
Le dimensioni e le metriche selezionate non possono essere interrogate insieme

Incorrect range height, was X but should be Y in Google Apps Script
Altezza di intervallo non valida, era di X ma dovrebbe essere di Y
Valido anche per: Incorrect range width, was X but should be Y (Larghezza di intervallo non valida, era di X ma dovrebbe essere di Y)

Cannot read property '0' of undefined
Impossibile leggere la proprietà '0' da undefined 

Exception: i parametri number non corrispondono alla firma del metodo per SpreadsheetApp.getRange.setValues
Errore durante la scrittura in un Foglio di Google

The recurrence interval for an Add-on trigger must be at least one hour
Gli eventi orologio devono essere pianificati con intervalli di almeno 1 ore l'uno dall'altro

Exception Gmail: operation not allowed
Operazione su Gmail non consentita.

GoogleJsonResponseException: Chiamata API a gmail.users.messages.send non riuscita con errore: Precondition check failed.
Chiamata API a gmail.users.messages.send non riuscita con errore

 

...ultimo aggiornamento 09/04/2022

 

La lista è in continuo aggiornamento!
Contribuisci anche te ad estenderla segnalando nei commenti di questo articolo eventuali altri errori che hai incontrato nello sviluppo con Google Apps Script e la strada che hai percorso per risolverli.

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

7 Commenti

  1. Monday, October 31, 2022 alle ore 21:05 Fabio

    function SecondaMacro() {
    var spreadsheet
    SpreadsheetApp.getActive();

    var row=2;

    for(n=1; n<=53; n++){
    for(x=1; x<=5; x++){

    spreadsheet.getRange('B'+row+").setValue(x);
    spreadsheet.getRange('A'+row+").setValue(n);
    row++;

    }
    }
    var sheet =spreadsheet.getSheets()[0];
    var range = sheet.getRange('F2:F61');
    var values = range,getValues();
    var lastCol = 3;
    var foglio1 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getname();


    for(var i = 0; i < values.lenght; i++){
    var col= columnToLetter(lastCol);

    if(values[i]!= "){
    spreadsheet.getRange(col+'1').setValues[i]);

    spreadsheet.getRange(col+'2').setFormula('=IFERROR(QUERY(Foglio1!$B$2:$E$13500;
    "select B where (C="&$B2&" and D = "&$A2&"and E = "&'+col+'$1&") limit 1";-1);"")');
    spreadsheet.getRange(col+'2').autoFill(spreadsheet.getRange(col+'2':'+col+'266'),
    SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);

    }
    lastCol++;

    }

    function columnToLetter(column) {
    var temp, letter = ";
    while (column>0) {
    temp=(column-1)\% 26;
    letter=String.fromCharCode(temp + 65) + letter;
    column = (column - temp -1)/26;
    }

    return letter;
    };
    }
    alla riga 10 mi da errore ma non riesco a risolverlo potrebbe dare un'occhiata? Grazie

    Rispondi a questo commento
    • Wednesday, November 30, 2022 alle ore 21:51 Michele PisaniAutore

      Ciao Fabio,
      oltre alla questione dell'uguaglianza mancante indicata nell'altro commento, il problema potrebbe anche essere di riferimento al Foglio, prova con getActiveSheet().

      Rispondi a questo commento
  2. Monday, October 31, 2022 alle ore 21:53 Michele PisaniAutore

    L'uguaglianza mancante nella seconda riga è voluto?

    Rispondi a questo commento
  3. Wednesday, November 30, 2022 alle ore 15:30 Jacopo Morandi

    // Function to submit the data to Database sheet
    function submitData() {

    var myGooglSheet= SpreadsheetApp.getActiveSpreadsheet();

    var shUserForm= myGooglSheet.getSheetByName("Tabella Entry");

    var datasheet = myGooglSheet.getSheetByName("Mese");

    var ui = SpreadsheetApp.getUi();

    var response = ui.alert("Inserire", 'Vuoi inserire questa spesa/incasso?',ui.ButtonSet.YES_NO);


    if (response == ui.Button.NO)
    {return;
    }
    else
    {

    var causaleEntry=shUserForm.getRange("D10");
    var fonteEntry=shUserForm.getRange("D6");
    var tipologiaEntry=shUserForm.getRange("D4");
    if (tipologiaEntry=="Spesa"){
    var importoEntry=shUserForm.getRange("D8");
    }
    else {
    var importoEntry=shUserForm.getRange("D8"*-1);
    }
    var riga=datasheet.getRange(5, 1, 38, 1).getValues();
    for(n=0;n<riga.length;++n){
    if (riga[n]==causaleEntry){break}
    }
    var colonna=datasheet.getRange(4, 2, 1, 4).getValues();
    for(nn=0;nn<colonna.length;++nn){
    if (colonna[nn]==fonteEntry){break}
    }
    datasheet.getRange(n+4,nn+1).setValue(datasheet.getRange(n+4, nn+1).getValue()+importoEntry);

    ui.alert('Nuova spesa/incasso inserita');

    shUserForm.getRange("D4").clear();
    shUserForm.getRange("D6").clear();
    shUserForm.getRange("D8").clear();
    shUserForm.getRange("D10").clear();
    }
    }

    Mi da Exception: Intervallo non trovato, credo che l'errore sia nella dichiarazione degli array "riga" e "colonna" ma non riesco a capire

    Rispondi a questo commento
    • Wednesday, November 30, 2022 alle ore 21:54 Michele Pisani

      Ciao Jacopo,
      questo tipo di fix richiede di prendere visione del codice, ad ogni modo un'informazione utile per capire se si può identificare un'anomalia a colpo d'occhio è indicare in quale riga ti dà quell'errore.

      Rispondi a questo commento
  4. Wednesday, November 30, 2022 alle ore 15:37 Jacopo Morandi

    Aggiungo:
    D4 è un menù a tendina che fa scegliere tra Spesa e Incasso
    D6 è un menù a tendina che fa scegliere tra Contanti, Posta, Postepay e Una carta
    D8 è un valore numerico ovviamente
    D10 un menù a tendina che fa scegliere tra molte diverse opzioni (spesa alimentare, salute etc etc)
    Nel foglio 2 (quello chiamato datasheet) c'è una tabella che ha le opzioni della casella D10 nella colonna A dalle caselle 5 alla 42 e le opzioni della casella D6 nella riga 4 dalla B alla E

    Rispondi a questo commento
    • Wednesday, November 30, 2022 alle ore 21:56 Michele PisaniAutore

      Ciao Jacopo,
      questo tipo di fix richiede un'attività di analisi del codice che non può essere risolta in un commento. Se hai bisogno di supporto attivo e riesci a fornirmi qualche informazione in più posso farti una stima dell'effort per effettuare l'attività di fixing.
      Fammi sapere!

      Rispondi a questo commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]https://www.appsscript.it[/url] se devi riferirti ad un indirizzo web