Tempo di lettura: 6 minuti

Eccoci al terzo articolo sull’argomento e per comodità riporto i link ai precedenti, per chi non li avesse letti::

Google Apps Script – 1 – Introduzione

Google Apps Script -2  – Le funzioni

Proseguiremo questo corso alla programmazione introducendo altri strumenti ed informazioni utili per meglio conoscere lo strumento Google Apps Script. In particolar modo vedremo l’uso delle variabili, la gestione condizionale degli errori tramite comando “if” ed infine i commenti.

 

PICCOLA INTRODUZIONE ALLE VARIABILI

Le variabili sono la chiave del meccanismo di funzionamento per qualsiasi linguaggio di programmazione. Tramite le variabili possiamo “parcheggiare” i dati che il nostro programma gestisce in modo da poterli riutilizzare in futuro. Le variabili possono contenere dati: quali stringhe alfanumeriche, numeri oppure anche liste di numeri e/o stringhe.

Lo “scope” di una variabile, (letterarlmente visibilità o anche detto ambito di validità), aiuta a definire in quale parte del codice la variabile è utilizzabile. Possiamo fare in modo che una certa variabile sia locale alla funzione che la definisce, oppure globale. Una variabile locale sarà riferibile solo all’interno della funzione stessa, quindi al di fuori non verrà riconosciuta o meglio lo stesso nome di variabile avrà un altro ambito di validità e potenzialmente un altro valore. Le variabili globali sono invece riferibili dall’intero programma.

 

LE GESTIONI CONDIZIONALI

I programmi, come diceva un mio vecchio amico di studi, devono essere “a prova di segretaria/o” . Senza offesa per la categoria intendeva dire che anche a seguito della pressione sbagliata di un qualche tasto il programma non sarebbe mai dovuto andare in errore. Ricordo scene comiche in cui testavamo i nostri primi programmi, ai tempi scritti in Pascal, schiacciando a caso come forsennati tutti i tasti della tastiera, (il mouse non c’era ancora). Questo per dirvi che l’utente potrebbe non digitare o cliccare quello che vi aspettate, ma il vostro programma non dovrebbe comunque andare in errore, ma anzi deve gestire ogni “stranezza”. Per gestire gli errori diventa indispensabile cominciare ad utilizzare le istruzioni condizionali, prima fra tutte, ma non unica, il comando “if … else”.  E’ molto semplice perchè questo comando ci permette di eseguire alcuni comandi “se” una certa condizione si verifica, ed altri “altrimenti”. 

Nel programma ciao2 dell’articolo precedente non sono per nulla gestiti eventuali inserimenti errati dell’utente. L’utente potrebbe non inserire nessun nome e a priori avete una vaga idea di come il vostro programma potrebbe comportarsi. Se l’utente inserisse una data di nascita assurda il programma proseguirebbe rendendosi addirittura ridicolo. Vedremo ora come risolvere questi piccoli inconvenienti.

 

I COMMENTI

Il nostro programma è ovviamente parlante per noi programmatori, o dovrebbe esserlo, e potrebbe esserlo se scritto bene, ma di tanto in tanto ci farebbe comodo lasciare qualche traccia di documentazione o semplici promemoria. La documentazione potrebbe essere a corredo del programma, scritta per esempio su un altro file, ma sicuramente potrebbe essere molto comoda anche all’interno del programma stesso. Questi appunti potrebbero aiutarci in futuro quando riapriremo i nostri programmi dopo molto tempo, oppure potrebbero aiutare altre persone a capire più velocemente quello che abbiamo scritto. Nelle Google Apps Script è sufficiente anteporre i caratteri “//” per dare il via ad una riga di commento. Un commento è del testo scritto che verrà completamente ignorato dall’esecuzione del programma, serve semplicemente a lasciare indicazioni e informazioni utili alla comprensione dello stesso.

 

PROGRAMMA CIAO 3

Copiate le seguenti righe, (quelle in blu), ed andate ad incollarle nell’editor, sostituendo per intero l’esistente.

//quelle che vengono descritte in quest’area sono variabili globali
var anno_corrente = ottieni_anno_corrente()

function onOpen() {
   SpreadsheetApp.getUi()
   .createMenu(“Programmi miei”)
   .addItem(“ciao”, “ciao”)
   .addToUi();
}

function ottieni_anno_corrente(){
   return(Utilities.formatDate(new Date(), “GMT+1”, “yyyy”))
}

function ciao3() {

  var nome_utente = input(“Ciao, come ti chiami?”)
           if (nome_utente == “”) { return; }
  var anno_di_nascita = input(“Quando sei nato?”)
if (anno_di_nascita == “”) { return; }
if (anno_di_nascita < 1900) { put(nome_utente + ” mi sembri troppo vecchio!”) ;return; }
if (anno_di_nascita > anno_corrente) { put(nome_utente + ” mi sembri troppo giovane!”); return; }
   

put(“Caro ” +       nome_utente + ” deduco tu abbia ” + (anno_corrente – anno_di_nascita) + ” anni!”)

}

 

Salvate, fate girare la funzione onOpen() chiudendo e riaprendo il foglio di calcolo, e poi dal menu “Programmi miei” lanciate “ciao3”.

Abbiamo inserito, tra le varie cose, una nuova funzione che si chiama ottieni_anno_corrente(), al momento poco ci interessa come sia stata scritta, la cosa importante è che in futuro potremmo riusarla in modo semplice a nostro piacimento. Ricordatevi sempre che questo è il modo migliore di scrivere programmi, funzioni con compiti chiari e riusabili, (i nostri mattoncini del lego). Per i più curiosi riporto la documentazione che spiega sintassi e funzionamento del comando Utilities.formatDate() . Potrete cercare e copiare da internet funzioni complesse, che svolgono precisi compiti, potrete farne uso, senza necessariamente interessarvi a come queste funzioni siano state scritte. Certo il programmatore professionista questo non lo tollera molto bene, ma siamo qui anche semplicemente per divertirci ed imparare cose utili, poi un domani chissà …

 

IF … ELSE

Veniamo ora all’uso dell’if partendo dalla sua sintassi completa:

if (condizione)  {

    istruzione 1;

    istruzione 2; }

else  {

    istruzione 3;

    istruzione 4; }

E’ tutto molto semplice, funziona così: se quello che scrivo tra parentesi tonda, (cioè la condizione), risultasse vero allora verranno eseguite le istruzioni 1 e 2, altrimenti le istruzioni 3 e 4. 

Nelle righe di codice che ho preparato ho voluto fare un utilizzo compatto di questa istruzione, rimanendo su una riga sola e senza utilizzare “else”. Questo si può tranquillamente fare ed in alcune occasioni aiuta a rendere il codice più semplice e leggibile.

if (anno_di_nascita == “”) { return; }
if (anno_di_nascita < 1900) { put(nome_utente + ” mi sembri troppo vecchio!”) ;return; }
if (anno_di_nascita > anno_corrente) { put(nome_utente + ” mi sembri troppo giovane!”); return; }   

Potete notare l’uso dell’istruzione “return” che fa uscire dal programma, o meglio fa uscire dalla funzione ciao3 che nel nostro caso rappresenta la funzione principale. Inoltre notate che ho inserito consecutivamente due istruzioni,  { put() ;return; } sono infatti l’istruzione 1 e l’istruzione 2 della sintassi “if” che potevano anche essere scritte indifferentemente su cinque righe come segue:

if (anno_di_nascita > anno_corrente)

{

   put(nome_utente + ” mi sembri troppo giovane!”);

   return;

}   

Sta a voi scegliere di volta in volta la modalità di scrittura codice che riterrete più leggibile e comprensibile.

 

LA VARIABILE GLOBALE anno_corrente

Nel programma è stata definita un’unica variabile globale. Per fare ciò essa dovrà essere dichiarata al di fuori di qualsiasi funzione. Nel nostro caso specifico la dichiariamo e subitamente le assegnamo un valore. Il valore di una variabile globale è utilizzabile ovunque all’interno del codice del programma, ma non solo, potrà anche essere modificata da qualsiasi riga di codice. Le variabili globali sono molto potenti, ma vanno gestite opportunamente.

 

CONCLUSIONI

Con quanto visto sino ad ora abbiamo le basi per cominciare a crescere e per esempio andare ad interagire con gli applicativi Google. Nei prossimi articoli andremo a scrivere, colorare e leggere le caselle di un foglio di calcolo.