BOLLETTINO OPERATIVO · GIO 18 GIU 2026 · 01:11 CET EN / IT / RSS / NEWSLETTER

Quante volte hai chiesto a un’AI di scriverti uno script per Google Sheets? Ecco come farlo bene

Far scrivere Apps Script a ChatGPT o Claude funziona. Ma il codice generato si rompe sempre negli stessi punti: scope OAuth, trigger, quote giornaliere. Un metodo in cinque mosse per generare codice che gira al primo colpo.

Aprire un foglio in Google Sheets, andare in Estensioni → Apps Script, incollare un prompt a un assistente AI e vedere arrivare 40 righe di codice JavaScript pronte. È diventato il modo standard di automatizzare un foglio per chi non programma di mestiere. Funziona sorprendentemente bene. Funziona anche quasi sempre.

L’«anche» è la parte interessante. Apps Script non è esattamente JavaScript: è JavaScript dentro un ambiente Google con regole proprie. Gli LLM lo conoscono, ma inciampano sempre sugli stessi tre o quattro punti. Conoscerli in anticipo cambia la qualità del codice che arriva.

1. Spiega prima il foglio, poi il problema

Il primo errore è descrivere il cosa senza descrivere il dove. “Fammi uno script che manda email quando uno stato cambia” è una richiesta povera. L’AI deve inventare la struttura del foglio, e di solito sbaglia.

Un prompt che funziona inizia descrivendo il foglio: nome dei fogli, intestazione delle colonne, tipo di dato. Tre righe bastano:

Foglio: "Ordini". Riga 1 = intestazione.
Colonne: A=id_ordine, B=data, C=id_cliente, D=stato.
Valori possibili in D: "nuovo", "in lavorazione", "spedito", "chiuso".
Voglio che quando una cella in D passa a "spedito", parta
un'email all'indirizzo del cliente preso dal foglio "Clienti".

Con questo contesto, il codice arriva pulito.

2. Chiedi esplicitamente quali permessi servono

Apps Script chiede autorizzazioni la prima volta che lo esegui: leggere il foglio, mandare email, accedere a Drive, fare chiamate HTTP esterne. Sono i cosiddetti scope OAuth. Se l’AI scrive uno script che chiama un’API esterna ma non dichiara lo scope, alla prima esecuzione Google blocca tutto con un messaggio criptico.

La soluzione è chiedere in coda al prompt: «elenca anche gli scope OAuth necessari e dimmi se vanno aggiunti manualmente in appsscript.json». Una buona risposta restituisce sia il codice sia la lista, ad esempio:

https://www.googleapis.com/auth/spreadsheets
https://www.googleapis.com/auth/script.send_mail
https://www.googleapis.com/auth/script.external_request

Se non li chiedi, l’AI spesso li dimentica.

3. Trigger: chiedi quale, non se

Apps Script offre due famiglie di trigger: semplici (onEdit, onOpen, onChange) e installabili. Si comportano in modo diverso e questa differenza spiega l’80% delle volte in cui uno script “sembra giusto ma non parte”.

I trigger semplici non hanno il permesso di chiamare servizi esterni (email, URL, Calendar). Servono i trigger installabili, da configurare manualmente in Trigger → Aggiungi trigger. Se chiedi all’AI «usa onEdit per mandare l’email», lo script verrà scritto, salvato, eseguito… senza mandare niente.

Il prompt buono dice: «quando lo stato passa a ‘spedito’, invia un’email — usa un trigger installabile onEdit, indicami come configurarlo a mano la prima volta».

4. Quote: una riga sola che evita un disastro

Apps Script ha quote giornaliere. Le due che si toccano per prime sono:

  • email al giorno: 100 per un account gratuito, 1500 per un account Workspace;
  • chiamate UrlFetchApp: 20.000 al giorno.

Se uno script invia un’email per ogni riga di un foglio da 200 righe con un account gratuito, alla 101esima si interrompe. Senza errore visibile, senza email di avviso. Ti accorgi del problema quando un cliente ti chiama.

Il prompt buono chiude con: «tieni conto del limite giornaliero email/UrlFetchApp e proteggimi dal superamento — log su un foglio dei tentativi se la quota è vicina al limite». Il codice torna più robusto.

5. Test prima del trigger, sempre

Un’abitudine che ripaga: chiedere all’AI di scrivere una funzione di test separata. Non il trigger, ma una funzione test_invioEmail() che simula un caso, scrive su log, e si esegue a mano dall’editor di Apps Script con il bottone Esegui. Solo quando il test gira, si attiva il trigger sul foglio reale. Evita il classico «si è inviato 47 volte la stessa email».

Un prompt completo, come riferimento

Ecco un esempio della forma che funziona:

Lavoro su Google Sheets. Foglio principale: "Ordini".
- Riga 1 = intestazione.
- Colonne: A=id_ordine, B=data, C=id_cliente, D=stato.
- Valori in D: nuovo, in lavorazione, spedito, chiuso.
- Foglio "Clienti": A=id_cliente, B=nome, C=email.

Voglio uno script Apps Script che, quando lo stato di un ordine
diventa "spedito", invii un'email al cliente.

Requisiti:
- usa un trigger installabile onEdit;
- elenca gli scope OAuth necessari;
- log delle email inviate in un foglio "log_email" (data, id_ordine, esito);
- proteggimi dal superamento della quota di 100 email/giorno;
- includi una funzione di test test_invioEmail() che simula un caso
  senza richiedere modifiche reali al foglio.

Da questo prompt, qualsiasi assistente AI moderno restituisce codice che gira al primo colpo nel 90% dei casi. Il restante 10% è di solito un nome di colonna sbagliato, e si corregge in dieci secondi.

L’AI non sostituisce la struttura

Il salto di qualità nel codice generato non viene da prompt più lunghi o da modelli più capaci. Viene dall’aver descritto bene il problema. Un foglio con colonne sensate, dati puliti e un’idea chiara di cosa deve succedere è metà del lavoro. L’altra metà la fa l’AI in due minuti.