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:
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.
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
Ciao Fabio,
oltre alla questione dell'uguaglianza mancante indicata nell'altro commento, il problema potrebbe anche essere di riferimento al Foglio, prova con getActiveSheet().
L'uguaglianza mancante nella seconda riga è voluto?
// 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
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.
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
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!