Envoyer des rappels par e-mail avant les rendez-vous stockés dans une feuille de calcul Google Sheets

Voici un exemple de script que vous pouvez utiliser pour envoyer des rappels par e-mail avant les rendez-vous stockés dans une feuille de calcul Google Sheets. Cet exemple est issue d'une demande de rappel à envoyer par un garagiste à ses clients.


Le script ci dessous parcourt toutes les lignes de la feuille de calcul "Rendez-vous" à partir de la deuxième ligne (la première ligne étant l'en-tête des colonnes), récupère la date, l'heure la nature des travaux et l'adresse e-mail de chaque rendez-vous, puis envoie un rappel par e-mail 24 heures avant le rendez-vous.

Le rappel est envoyé uniquement si la différence entre la date et l'heure du rendez-vous et la date et l'heure actuelles est inférieure ou égale à 86400000 millisecondes, soit 24 heures. Le script enregistre également les informations de rappel dans la feuille de calcul "Rappels" pour pouvoir les suivre et vérifier qu'ils ont été envoyés.

Vous pouvez configurer le script pour s'exécuter automatiquement à intervalles réguliers en utilisant le déclencheur de minuteur de Google Apps Script.

function envoiEmailDeRappel() {

 var classeur = SpreadsheetApp.getActiveSpreadsheet();

 var feuille = classeur.getSheetByName("Rendez-vous");

 var dataRange = feuille.getDataRange();

 var data = dataRange.getValues();

 var feuilleRappel = classeur.getSheetByName("Rappels");

 var now = new Date();

  for (var i = 1; i < data.length; i++) {

   var row = data[i];

   var date = new Date(row[0]);

   var time = new Date(row[1]);

   var datetime = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds());

   var email = row[2];

   var travaux = row[3];

  

   if (datetime.valueOf() - now.valueOf() <= 86400000) { // Envoi d'un rappel 24 heures avant le rendez-vous

     var subject = "Rappel : Votre rendez-vous au garage automobile est dans 24 heures";

     var dateString = date.toLocaleDateString('fr-FR', {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'});

     var timeString = time.toLocaleTimeString('fr-FR', {hour12: false});

     var message = "<html><body>Bonjour,<br><br>Ceci est un rappel pour votre rendez-vous au garage automobile (" + travaux + ") prévu le <b>" + dateString + "</b> à <b>" + timeString + "</b>.<br><br>Si vous avez besoin d'annuler ou de reporter votre rendez-vous, veuillez nous contacter dès que possible.<br><br>Cordialement,<br><br>Le garage automobile</body></html>";

     MailApp.sendEmail(email, subject, '', {htmlBody: message});

     feuilleRappel.appendRow([date, time, email]);

   }

 }

}