Automazioni utili
Tutorial pratico
Google Apps Script · Gemini · Gmail

Trova ogni giorno le email da persone vere a cui non hai risposto.

Un piccolo report automatico, costruito con Gemini, per far emergere dalla posta solo le conversazioni che meritano davvero la tua attenzione.

Livello: intermedioTempo di lettura: 8 minAutomazione giornaliera

Un problema classico: la casella si riempie di newsletter, notifiche di piattaforme e ricevute automatiche. In mezzo, si perdono le poche email scritte da persone reali che aspettano una risposta.

Questo tutorial crea un report giornaliero con un approccio fuzzy: invece di indovinare attraverso parole chiave, è Gemini a leggere il contenuto e decidere cosa merita davvero una risposta umana. Il tutto gira in autonomia ogni mattina con Google Apps Script.

Tutti gli indirizzi, nomi e dati personali mostrati qui sono placeholder, ad esempio [email protected].

Il punto di partenza: chiedere a Gemini dentro Gmail

Dentro l'app Gemini puoi interrogare la posta attivando l'estensione Google Workspace e anteponendo @Gmail alla richiesta:

@Gmail cerca le mail a cui non ho risposto

Funziona per una ricerca interattiva al volo, ma non sempre distingue bene una persona reale da una piattaforma. Soprattutto, non puoi pianificarla: Gemini in chat risponde solo a un comando diretto.

Per automatizzare, spostiamo la logica in Google Apps Script: può avviarsi su un timer quotidiano e delegare a Gemini la parte intelligente.

L'idea: ricerca fuzzy con Gemini

In una frase

Gemini legge il contenuto di ogni email recente e seleziona solo quelle che sembrano scritte da una persona e richiedono una tua azione.

Il modello coglie il contesto — tono confidenziale, domanda esplicita, notifica automatica mascherata da testo normale — senza limitarsi a cercare parole spia.

  1. Raccoglie le email delle ultime 24 ore e scarta i thread a cui hai già risposto.
  2. Estrae un breve frammento del corpo di ogni messaggio.
  3. Chiede a Gemini un JSON con le email da seguire e il relativo motivo.
  4. Compone il report e te lo invia via email.

Crea una chiave API gratuita

  1. Vai su aistudio.google.com con il tuo account Google.
  2. Seleziona Get API Key → Create API Key e copia la chiave generata.

Salva la chiave senza scriverla nel codice

In script.google.com crea un progetto e apri le Impostazioni progetto. In fondo alla pagina scegli Proprietà dello script → Aggiungi proprietà, quindi salva:

Così il segreto rimane nelle proprietà del progetto e non finisce nel codice.

Incolla il codice

Sostituisci [email protected] con l'indirizzo a cui vuoi ricevere il report, poi incolla questo script nell'editor.

Google Apps Script
function inviaRiepilogoEmailConGemini() {
  const DESTINATARIO_REPORT = "[email protected]";
  const threads = GmailApp.search("newer_than:1d");
  const emailDaAnalizzare = [];

  for (let i = 0; i < threads.length; i++) {
    const thread = threads[i];
    const messaggi = thread.getMessages();
    const ultimo = messaggi[messaggi.length - 1];
    const mittente = ultimo.getFrom();

    // Salta il thread se l'ultimo messaggio è stato inviato da te.
    if (mittente.includes(GmailApp.getAliases()[0]) ||
        mittente.includes(Session.getActiveUser().getEmail())) continue;

    emailDaAnalizzare.push({
      id: i, mittente, oggetto: ultimo.getSubject(),
      estratto: ultimo.getPlainBody().substring(0, 1500),
      link: thread.getPermalink()
    });
  }
  if (!emailDaAnalizzare.length) return;

  const prompt = `Analizza queste email ricevute nelle ultime 24 ore.
Identifica SOLO quelle scritte da persone reali che richiedono una risposta,
un'azione o attenzione da parte mia. Escludi newsletter, marketing, ricevute,
notifiche automatiche e messaggi generici da bot.
Rispondi ESCLUSIVAMENTE con JSON valido in questo formato:
[{"id": 0, "motivo": "una riga sul perché rispondere"}]
Email: ${JSON.stringify(emailDaAnalizzare, null, 2)}`;

  const apiKey = PropertiesService.getScriptProperties().getProperty("GEMINI_KEY");
  if (!apiKey) throw new Error("GEMINI_KEY non trovata");

  const response = UrlFetchApp.fetch(
    `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${apiKey}`,
    { method: "POST", contentType: "application/json",
      payload: JSON.stringify({ contents: [{ parts: [{ text: prompt }] }],
        generationConfig: { responseMimeType: "application/json" } }) }
  );
  const selezionate = JSON.parse(JSON.parse(response.getContentText())
    .candidates[0].content.parts[0].text);

  if (!selezionate.length) return;
  let corpo = "Ciao,\n\nEmail da persone reali in attesa di risposta:\n\n";
  selezionate.forEach((sel, idx) => {
    const e = emailDaAnalizzare.find(x => x.id === sel.id);
    if (e) corpo += `${idx + 1}. Da: ${e.mittente}\n   Oggetto: ${e.oggetto}\n   Contesto: ${sel.motivo}\n   Rispondi: ${e.link}\n\n`;
  });
  GmailApp.sendEmail(DESTINATARIO_REPORT,
    `[Report Smart] ${selezionate.length} email a cui rispondere`, corpo);
}

Pianifica l'esecuzione giornaliera

Per far partire lo script automaticamente ogni mattina, senza aprire nulla:

  1. Nel pannello Apps Script, fai clic sull'icona Attivatori (sveglia/orologio) nella barra laterale.
  2. In basso a destra scegli + Aggiungi attivatore.
  3. Come funzione seleziona inviaRiepilogoEmailConGemini.
  4. Imposta sorgente Sulla base del tempo, tipo Timer giornaliero e la fascia oraria desiderata, per esempio 07:00–08:00.
  5. Salva e concedi le autorizzazioni necessarie per Gmail e l'invio email. Se appare l'avviso di app non verificata, scegli Avanzate → Apri [nome progetto].

Da questo momento Google eseguirà lo script ogni giorno e ti recapiterà il report.

Note pratiche

  • Costi e limiti: il piano gratuito di AI Studio è adatto a volumi contenuti; per molte email, verifica le quote correnti.
  • Privacy: invii estratti della posta alle API Google AI Studio. Valuta con attenzione i contenuti sensibili.
  • Finestra temporale: newer_than:1d guarda le ultime 24 ore; coordinane l'uso con l'orario del trigger.
  • Falsi positivi e negativi: è un promemoria, non un sistema di ticketing. Affina il prompt sui tuoi pattern reali.
  • Risposte già inviate: il controllo osserva l'ultimo messaggio del thread; risposte inviate fuori Gmail non vengono viste.