In Google Apps Script non è possibile chiamare una funzione in modo globale, ovvero, le funzioni devono essere chiamate da comandi che si trovano all'interno della stessa o di un'altra funzione. Con un esempio cercherò di chiarire questo discorso contorto se pur semplice concettualmente.
Un comando di chiamata di una funzione direttamente dal corpo dello script (nel tentativo vano, con questo approccio, di eseguire una funzione all'apertura dello script), come nell'esempio seguente, genererà l'errore 'DNS error: https://undefined' (Fig. 1), come se il parametro della funzione chiamante non venisse rilevato e quindi non passato alla funzione che si intende chiamare:
function myFunction(url){
var result = UrlFetchApp.fetch(url);
return result;
}
result = myFunction("http://www.michelepisani.it");
Di seguito uno screenshot dell'errore che sarà restituito dall'editor di script:
Come anticipato, per poter funzionare, è necessario inserire la chiamata alla funzione all'interno di una funzione definita e a quel punto, se si intende eseguire quel comando all'avvio dello script si dovrà inserire la chiamata desiderata all'interno di una funzione doGet o doPost in caso di web app o impostare la funzione contenente la chiamata come quella di partenza tramite un trigger nel caso di applicazioni standalone, come nel codice di esempio seguente:
function myFunction(url) {
var result = UrlFetchApp.fetch(url);
return result;
}
function startFunction() {
result = myFunction("http://www.michelepisani.it");
Logger.log(result);
}
L'errore non è bloccante, ovvero continueranno ad essere eseguite le righe successive dello script (quantomeno fino a che non verrà generato un altro tipo di errore causato dalla mancata risposta della precedente chiamata all'indirizzo 'undefined').
Nel caso in cui il messaggio di errore dovesse mostrare l'url al quale si sta tentando di accedere, come ad esempio "DNS error: https://ws.test.it/" (Fig. 2), significa che c'è un effettivo problema con quell'indirizzo:

Fig. 1 - DNS error: https://ws.test.it - nome a dominio inesistente utilizzato come esempio per la generazione dell'errore
Molto probabilmente, in questo caso, c'è un errore di digitazione nel nome a dominio o il nome a dominio non esiste. Se provate infatti a digitare 'https://ws.test.it/' nella barra degli indirizzi del browser (almeno fino a quando il proprietario di test.it non crei un terzo livello come quello che ho utilizzato nell'esempio) la risposta che otterete sarà 'Impossibile trovare l'indirizzo DNS del server ws.test.it'.
Non ci sono commenti
Nessuno ha ancora commentato questo articolo, fallo tu per primo!
scrivi un commento