Comment envoyer automatiquement un courriel lorsqu'une case est cochée ?

Un collègue me demandait récemment comment envoyer automatiquement un courriel lorsqu'une case est cochée dans une ligne de feuille de calcul ?


La solution passe par quelques lignes de script et un déclencheur.

Le déclencheur va permettre de traquer l'événement de case cochée et réaliser l'opération d'envoi de mail. 

Voici l'exemple avec la feuille de calcul :


Le script va se lancer si dans la colonne D pour la ligne sélectionnée la case est cochée. 

Quand l'utilisateur coche la case, un message d'avertissement demande si il souhaite envoyer le mail.


Si l'utilisateur clique sur Oui, le mail est envoyé et le script indique la date d'envoi dans la colonne F et Email envoyé dans la colonne G de la ligne sélectionnée.


Le script a donc extrait la valeur de la colonne B dans la même ligne que la case à cocher et envoyer un e-mail. Vous pouvez modifier l'objet et le corps du texte comme vous le souhaitez, mais si vous voulez qu'il soit plus qu'une simple ligne de texte, modifiez le corps : en htmlBody : et vous pouvez utiliser des balises html pour modifier des choses comme la couleur de la police, la taille, etc.


function onEditDeclencheur(e) { Logger.log(e.value) //Enregistrer la valeur de e.value dans la log if(e.value=="TRUE"){ // Declaration des variables var ui = SpreadsheetApp.getUi() var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var fuseauHoraire = Session.getScriptTimeZone(); // Alerte utilisateur var resultat = ui.alert('[Découvrir Google Workspace]','Envoyer un courriel ?',ui.ButtonSet.YES_NO) // Si l'utilisateur approuve if(resultat==ui.Button.YES){ var email = feuille.getRange("B"+e.range.getRow()).getValues(); // Récupération de l'e-mail de la colonne B de la ligne éditée Logger.log("Emailing "+email[0]) // Enregistrer le courriel dans la log feuille.getRange("F"+e.range.getRow()).setValue(Utilities.formatDate(new Date(), fuseauHoraire, "dd/MM/yyyy")); //Inscription dans la colonne F que la dernière date d'envoi du mail feuille.getRange("G"+e.range.getRow()).setValue("Email envoyé"); //Inscription dans la colonne G que le courriel a été envoyé // Envoyer le courriel MailApp.sendEmail({ to: email.toString(), subject: "Objet générique", // Objet ici name: "Votre nom", // Votre nom ici body: "Corps du courriel générique", // Corps du courriel ici }) Logger.log("Envoyé") // } Logger.log("Mot déclencheur "+e.value+" compléter") // } }
Pour mettre en place le déclencheur, cliquer sur Edition > Déclencheur du projet actuel et paramétrer les conditions de déclenchement comme ci dessous :


Voilà, j'espère que cet exemple vous aura intéressé !