Facciamo subito una precisazione, che non dev'essere spam dato che comunque oggi i provider email sono sempre più evoluti e la pratica - inutile - nemmeno avrebbe successo. Lo scopo è invece quello, ad esempio per un'azienda, di contattare direttamente i clienti tramite un'integrazione con il calendario di Google. Concettualmente, partiamo da questo presupposto:

  • oggi la mia azienda vende un elettrodomestico (es. caldaia) ad un cliente
  • a distanza di un tempo prefissato (es. un anno) è opportuno programmare la manutenzione
  • su Google Calendar salvo l'evento con le info per contattare il cliente
  • anziché dover svolgere l'operazione manualmente, con Google Calendar e Google Script possiamo automatizzare la cosa (non abbiamo ufficialmente accesso diretto a WhatsApp o SMS, salvo integrazione con sofwtare di terze parti, mentre per l'invio di email la soluzione è più semplice).

Vediamo quindi come funziona.

  1. su Google Calendar (calendar.google.com) andiamo a creare un evento con titolo e descrizione: nella descrizione mettiamo SOLO l'indirizzo email del destinatario, mentre nel titolo quello che vogliamo compaia
  2. ora viene la parte più complicata ma basta seguire i passaggi:
    • andiamo su Google Apps Script (script.google.com)
    • crea nuovo progetto
    • nel codice.gs inseriamo questo:
      function sendEmailReminder() {
        const calendar = CalendarApp.getDefaultCalendar();
        const now = new Date();
        Logger.log(`🕒 Ora attuale: ${now}`);
      
        // Recupera tutti gli eventi di oggi
        const events = calendar.getEventsForDay(now);
        Logger.log(`📅 Eventi trovati: ${events.length}`);
      
        if (events.length === 0) {
          Logger.log("❌ Nessun evento trovato per oggi.");
          return;
        }
      
        events.forEach(event => {
          Logger.log(`📌 Titolo evento: ${event.getTitle()}`);
          Logger.log(`⏰ Orario inizio: ${event.getStartTime()}`);
          Logger.log(`📖 Descrizione: ${event.getDescription()}`);
      
          // Cerca un indirizzo email valido ovunque nella descrizione
          const emailMatch = event.getDescription().match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/);
      
          if (!emailMatch) {
            Logger.log("❌ Nessuna email trovata nella descrizione.");
            return; // Salta se l'email non è presente
          }
      
          const email = emailMatch[0].trim();
          Logger.log(`✅ Email trovata: ${email}`);
      
          // Calcola l'orario del reminder (30 minuti prima)
          const startTime = event.getStartTime();
          const reminderTime = new Date(startTime.getTime() - 30 * 60000);
          Logger.log(`🕓 Orario promemoria: ${reminderTime}`);
      
          // Invia l'email se è il momento giusto
          if (now >= reminderTime && now < startTime) {
            const subject = `🔔 Promemoria: ${event.getTitle()}`;
            const message = `Ciao! Ti ricordo l'evento "${event.getTitle()}" oggi alle ${startTime.toLocaleTimeString()}.`;
            MailApp.sendEmail(email, subject, message);
            Logger.log(`📧 Email inviata a: ${email}`);
          } else {
            Logger.log("⏳ Non è ancora il momento di inviare l'email.");
          }
        });
      }
    • eventualmente personalizziamo la stringa del messaggio da inviare, che ora è predefinito: "Ciao! Ti ricordo l'evento [...] oggi alle [...]"
    • attivatori, aggiungi attivatore: sendEmailReminder, evento vincolato a specifiche temporali, timer orario: ogni ora; prima di salvare ci viene richiesto il login con account Google (per dimostrare l'integrazione con Google Calendar)
  3. ora per verifica, possiamo eseguirlo manualmente (magari con un nostro evento di prova) e vedere il log di esecuzione, se ha funzionato correttamente
  4. con alcuni provider mail, potrebbero esserci problemi nel caso l'indirizzo mittente - collegato all'account Google - non sia nativo Gmail dato che ci si aspetta (nel mio caso ho usato un account Outlook Mail come mittente, a Gmail è arrivato correttamente mentre a Yahoo Mail l'inivio è fallito); quindi senza ricorrere ad esempio soluzioni SMTP di terze parti, impostare un account Gmail come mittente dovrebbe funzionare senza questo problema

Vediamo un'immagine che riassume i vari step.
google-calendar-automazione-email

Powered by: FreeFlarum.
(remove this footer)