Fogli di calcolo al lavoro
Che cos’è GAS (Google Apps Script)?
Guida all’automazione di Fogli Google
Sistemare ogni settimana una tabella nella stessa forma. Eliminare le righe vuote dai dati incollati. Segnare le righe che rispettano una condizione. I fogli di calcolo sono pieni di attività con passaggi fissi.
A svolgere automaticamente queste attività ci pensa GAS (Google Apps Script). Questo articolo spiega cosa può fare GAS, da dove iniziare e come superare le schermate di «autorizzazione» su cui molti si bloccano la prima volta.
Che cos’è GAS?
GAS è il modo offerto da Google per eseguire programmi. Usa la stessa sintassi di JavaScript e gestisce Fogli Google ma anche Gmail, Google Calendar, Google Drive e Moduli Google.
Basta un account Google. È gratuito e non serve installare nulla: apri un foglio nel browser e inizia a scrivere. Il programma gira sui server di Google, non sul tuo computer.
Macro registrate e GAS
Fogli Google ha le «macro», che registrano le tue azioni per ripeterle quante volte vuoi. Avvia la registrazione con «Estensioni» → «Macro» → «Registra macro», seleziona e scrivi nelle celle, e le tue azioni vengono salvate come codice GAS.
/** @OnlyCurrentDoc */
function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B2').activate();
spreadsheet.getCurrentCell().setValue('test');
spreadsheet.getActiveRangeList().setFontWeight('bold');
};In altre parole, una macro è GAS. Anche se le dai un nome come «Prova grassetto», la funzione nel codice si chiama myFunction. Il nome nel menu e il nome della funzione sono salvati separatamente.
Durante la registrazione scegli nella barra in basso «Usa riferimenti assoluti» o «Usa riferimenti relativi». I riferimenti assoluti vengono salvati come indirizzi (B2): la macro scrive sempre nello stesso punto, qualunque cella sia selezionata. Quelli relativi vengono salvati come «una riga sotto la cella attuale» e partono dalla cella selezionata.
Con la sola registrazione non si gestiscono tabelle di lunghezza variabile né passaggi con condizioni. Da lì in poi si legge il codice registrato e lo si completa.
Cosa si può fare con GAS
- Eliminare le righe vuote dai dati incollati e formattare le intestazioni
- Guardare importi o date e scrivere «Grande» o «Scaduto» in una colonna
- Aggiungere un proprio menu al foglio e avviare le operazioni come con un pulsante
- Creare funzioni proprie da usare nelle celle (funzioni personalizzate)
- Inviare email con Gmail in base a una tabella
- Eseguire un’operazione a un’ora fissa, ad esempio ogni mattina alle 8 (attivatori)
- Copiare in un altro foglio le risposte di Moduli Google appena arrivano
A mano ognuna di queste attività richiede da pochi minuti a decine di minuti. Una volta scritta, basta un clic su un menu, oppure parte da sola.
Come iniziare con GAS
- Apri il foglio e scegli «Estensioni» → «Apps Script»
- L’editor si apre in una nuova scheda: a sinistra «Codice.gs», a destra
function myFunction() { } - Scrivi il codice dentro
{ }e salva (Ctrl+S, su Mac ⌘+S) - Fai clic su «▷ Esegui» in alto. Il risultato compare in basso nel «Log di esecuzione»
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const value = sheet.getRange('A1').getValue();
Logger.log(value);
sheet.getRange('B1').setValue('Controllato');
}Logger.log scrive un valore nel log di esecuzione. I numeri compaiono con il punto decimale, ad esempio 120.0 (console.log mostra 120). Se qualcosa non funziona come previsto, controlla prima i valori nel log.
Le schermate di autorizzazione alla prima esecuzione
La prima volta che esegui il tuo codice compare una schermata che chiede se lo script può leggere e modificare il foglio. Molti si fermano qui, quindi vediamola passo per passo.
- «Autorizzazione richiesta» → Rivedi autorizzazioni / OK
- Scegli un account
- «Google non ha verificato questa app» → «Avanzate» in basso a sinistra
- «Vai a (nome del progetto) (non sicuro)»
- Controlla cosa consenti e fai clic su «Consenti» (se ci sono voci da selezionare, selezionale e fai clic su «Continua»)
«Google non ha verificato questa app» è un avviso per gli script non esaminati da Google. Gli script che scrivi e le macro che registri non sono esaminati, quindi questa schermata compare sempre. Se l’hai creato tu, puoi proseguire senza problemi.
Al contrario, se la schermata compare in un foglio ricevuto da uno sconosciuto, scegli «Torna in sicurezza». Una volta consentito, lo script può agire sui tuoi fogli e sulla tua posta con il tuo account.
Se metti /** @OnlyCurrentDoc */ all’inizio del codice, lo script può toccare solo «questo foglio» e le autorizzazioni richieste sono più ristrette. Le macro registrate lo hanno fin dall’inizio.
Puoi seguire gli stessi passaggi nella missione 1 degli esercizi.
Codice di uso comune
Ecco ciò che si usa più spesso lavorando con un foglio. I numeri di riga e di colonna partono da 1, gli indici di un array letto con getValues da 0.
| Codice | Significato |
|---|---|
| const sheet = SpreadsheetApp.getActiveSheet(); | Il foglio aperto ora |
| sheet.getRange('A1').getValue() | Leggere il valore di A1 |
| sheet.getRange('A1').setValue('Completato') | Scrivere in A1 |
| sheet.getRange(2, 3) | Riga 2, colonna 3 (C2). Le colonne si possono indicare con un numero |
| sheet.getRange('A2:C10').getValues() | Leggere un intervallo in una volta (array bidimensionale) |
| sheet.getRange(2, 1, 9, 3).setValues(values) | Scrivere in una volta (righe e colonne uguali all’array) |
| sheet.getLastRow() | Numero dell’ultima riga con un valore |
| sheet.appendRow(['10/31', 'Sato', 5000]) | Aggiungere una riga sotto l’ultima |
| sheet.deleteRow(5) | Eliminare la riga 5 (quelle sotto salgono) |
| sheet.getRange('A1:D1').setFontWeight('bold') | Mettere in grassetto |
| sheet.getRange('A1:D1').setBackground('#fff2cc') | Impostare il colore di sfondo |
| Logger.log(value) | Scrivere nel log di esecuzione (per controllare i valori) |
function judgeTargets() {
const sheet = SpreadsheetApp.getActiveSheet();
for (let row = 2; row <= sheet.getLastRow(); row++) {
const sales = sheet.getRange(row, 2).getValue();
const target = sheet.getRange(row, 3).getValue();
if (sales >= target) {
sheet.getRange(row, 4).setValue('Raggiunto');
} else {
sheet.getRange(row, 4).setValue('Non raggiunto');
}
}
}function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Chiusura mensile')
.addItem('Segna le vendite grandi', 'markLarge')
.addToUi();
}Una funzione chiamata onOpen parte automaticamente all’apertura del foglio. Se la esegui con «▷ Esegui» nell’editor compare l’errore Cannot call SpreadsheetApp.getUi() from this context., quindi salva e riapri il foglio per verificare.
Inviare email e programmare con gli attivatori
Gli argomenti più cercati su GAS sono l’invio di email e gli attivatori.
function sendReminders() {
const sheet = SpreadsheetApp.getActiveSheet();
const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
rows.forEach(([name, email]) => {
MailApp.sendEmail(email, 'Promemoria scadenza', name + ',\n\nla scadenza è questo venerdì.');
});
}C’è un limite di invio: un account Google gratuito può inviare fino a 100 email al giorno (gli account Google Workspace di più). Ogni esecuzione dura al massimo 6 minuti; oltre si ferma con «Exceeded maximum execution time».
Per programmarla, fai clic a sinistra nell’editor su «Attivatori» (icona dell’orologio) → «Aggiungi attivatore», poi scegli la funzione e «Basato sul tempo». Puoi indicare una fascia oraria ogni giorno, settimana o mese.
Le email partono davvero anche quando stai solo provando. Prova prima con una tabella che contiene solo il tuo indirizzo.
Differenze con il VBA di Excel
| GAS | VBA di Excel | |
|---|---|---|
| Codice | JavaScript | VBA(Visual Basic) |
| Dove gira | Server di Google | Excel sul tuo computer |
| Cosa serve | Un browser e un account Google | La versione desktop di Excel (soprattutto su Windows) |
| Si collega a | Gmail, Calendar, Drive, Moduli | Word, Outlook, file del computer |
| Esecuzione a orari fissi | Con gli attivatori (funziona anche a computer spento) | Combinato con l’Utilità di pianificazione di Windows o simili |
Le idee sono le stesse in entrambi: leggere celle, scrivere, ripetere e distinguere in base a condizioni. Chi conosce uno legge anche l’altro. Le macro di Excel sono spiegate nella nostra introduzione alle macro di Excel.
Esercitarsi nel browser
Nella simulazione di macro e GAS di questo sito ti eserciti eseguendo codice vero in un foglio e in un editor di Apps Script virtuali. Completi gli spazi vuoti nel codice; sullo smartphone scegli ogni spazio tra quattro opzioni.
- Capitolo 1 Registrare ed eseguire macro
Eseguire una macro registrata e registrarne una propria. Riferimenti assoluti e relativi, come leggere e correggere il codice registrato.
- Capitolo 2 Leggere, ripetere, distinguere
Leggere le celle con getValue, scrivere con setValue e controllare i valori nel log di esecuzione. Scorrere tutte le righe con for e distinguere con if.
- Capitolo 3 Caso pratico: sistemare la tabella delle vendite mensili
Eliminare le righe vuote, segnare in una volta le vendite grandi e avviare tutto da un proprio menu. Infine, una funzione propria per le celle.
Come imparare GAS
Un buon inizio è «Registra macro» in un tuo foglio e leggere il codice ottenuto. Così si capisce meglio cosa fa ogni istruzione.
Anche l’IA generativa scrive codice. Ma per capire se è giusto e dove correggerlo, devi saper leggere almeno il «codice di uso comune» di questo articolo.
* Nomi delle schermate e limiti aggiornati a ottobre 2026; possono cambiare con le modifiche di Google.
* Fogli Google è un marchio di Google LLC. Questo sito non è affiliato a Google.