Comment envoyer un email après la soumission d'un formulaire ?

Souvent demandé par mes collègues, comment envoyer un email avec les informations saisies dans un formulaire ?
En fait en quelques lignes de script, vous pouvez assez facilement répondre à ce besoin.

Avant de vous présenter le script, un rappel : quand vous créer un formulaire, vous avez la possibilité de recevoir les réponses dans une feuille de calcul Google Sheets.

Depuis la feuille de calcul, vous avez accès à l'éditeur de script via le menu Outils > Editeur de script qui vous affichera un écran pour écrire votre script.

Imaginons un formulaire tout simple de demande d'assistance.


L'idée serait qu'à chaque fois qu'un formulaire est soumis, le service support reçoive une information par email.

Pour cela, nous allons devoir via un script "attraper" les informations saisies, les mettre en forme pour les envoyer au support afin que le mail puisse ressembler à ceci

xxxx@domaine.fr

14:12 (il y a 0 minute)
À support
Bonjour,

Merci de traiter la demande d'assistance de Jean BOMBEUR :
  • Demande : Ceci est un test
  • Gravité: 3

Email du demandeur : jean@bombeur.fr
Lien du fichier pour obtenir l'ensemble des informations.

Belle journée,

Et voici une proposition de script avec le code Javascript

function envoiEmail(e) { // Définition du classeur et de la feuille var classeur = SpreadsheetApp.getActiveSpreadsheet() var feuille = classeur.getSheetByName("Réponses au formulaire 1"); // Lire les données dans un tableau var formulaireArray = feuille.getDataRange().getValues(); // Récupération des valeurs var horodateur = e.values[0]; var nom = e.values[1]; var emailDemandeur =e.values[2]; var gravite = e.values[3]; var demande = e.values[4]; var email = "support@domaine.fr"; <= A MODIFIER var url = classeur.getUrl(); const htmlTemplate = HtmlService.createTemplateFromFile("email"); htmlTemplate.horodateur = horodateur; htmlTemplate.nom = nom; htmlTemplate.emailDemandeur = emailDemandeur; htmlTemplate.gravite = gravite; htmlTemplate.demande = demande; htmlTemplate.url = url; const htmlForEmail = htmlTemplate.evaluate().getContent(); console.log(htmlForEmail); var sujet = "Demande de " + nom ; GmailApp.sendEmail(email, sujet, "Merci de lire ce mail avec un client supportant le code HTML", {htmlBody: htmlForEmail } ); }

Et le code Html

<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <div>Bonjour,</div> <div><br>Merci de traiter la demande d'assistance de <?= nom ?> :</div> <div> <ul> <li>Demande : <?= demande ?> </li> <li>Gravité: <?= gravite ?> </li> </ul> </div> <div> <br>Email du demandeur : <?= emailDemandeur ?> <br><a href='<?= url ?>'>Lien du fichier</a> pour obtenir l'ensemble des informations. </div> <br>Belle journée, </body> </html>
Ensuite, il ne reste plus qu'à ajouter un déclencheur pour que la fonction envoiEmail se lance à chaque soumission de formulaire.



Commentaires