Comment envoyer automatiquement des e-mails à partir de Google Sheets (à l’aide d’Appscript)

Photo of author

By Julien

De nos jours, les feuilles de calcul visent à automatiser autant de tâches que possible.

Imaginez un scénario dans lequel vous devez traiter une commande, créer une facture, puis envoyer la facture par e-mail aux parties concernées tout en mettant à jour tous les détails de la commande nécessaires dans une feuille de calcul.

Croyez-le ou non, il est en fait possible de faire tout cela en même temps et cela sans utiliser d’application personnalisée.

À l’aide de Google App Script, vous pouvez coder l’intégralité du pipeline dans le cadre de vos feuilles de calcul Google et l’enregistrer. La prochaine fois que vous devrez traiter une ou même des centaines de commandes, il vous suffira d’exécuter le script !

Et vous obtenez tout cela sans dépenser un centime en logiciel de gestion des factures ! La chose la plus importante est que vous obteniez le processus adapté pour effectuer précisément les tâches requises, de sorte que vous ayez plus de contrôle sur le traitement.

Envoi d’un seul e-mail à l’aide d’App Script dans Google Sheets

Commençons simple. Envoyons un e-mail à une seule personne à l’aide d’App Script. Supposons donc que vous ayez une feuille de calcul avec une seule adresse e-mail dans une cellule, un e-mail dans la cellule suivante et le sujet dans la troisième cellule.image 3

La syntaxe App Script pour l’envoi d’un e-mail ne comporte qu’une seule ligne :

MailApp.sendEmail(emailAddress, subject, message);

adresse e-mail, matière, et message peuvent être remplacés par des références aux cellules respectives.

Voici les étapes à suivre si vous souhaitez utiliser App Script pour envoyer un e-mail à une adresse spécifiée :

1. Sélectionnez Éditeur de script dans le menu Outils

2. Vous trouvez un modèle pour une fonctionnalité qui existe déjà. Vous pouvez simplement commencer à coder avec ceci. Renommez cette fonction en sendEmail. Remplacez donc le mot myFunction (qui est le nom de la fonction) par notre nouveau nom de fonction, sendEmail.

image 11

3. À l’intérieur des accolades, nous pouvons définir ce que cette fonction doit faire. Entrez les lignes suivantes entre les accolades :

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var emailAddress = sheet1.getRange(2,1).getValue();
var subject = sheet1.getRange(2,2).getValue();
var message = sheet1.getRange(2,3).getValue();
MailApp.sendEmail(emailAddress, subject, message);

Dans les deux premières lignes, nous accédons à la feuille de calcul nommée ‘Sheet1’ et y stockons un handle dans une variable appelée feuille 1. Aux lignes 3, 4 et 5, nous créons trois variables – adresse e-mail, matière, et message. Utilisation de Sheet1 getRange() fonction, nous attribuons la valeur qui se trouve dans la deuxième ligne, la première colonne (cellule A2) à la variable adresse e-mail. De même, la valeur de la deuxième ligne, la deuxième colonne (B2) est affectée à la variable matière et la valeur dans la troisième colonne de la deuxième ligne (C2) est affectée à la variable message.

Enfin, à la ligne 6, on utilise MailApp.sendEmail() fonction pour envoyer un e-mail à l’adresse e-mail prévue, avec le sujet et le message contenus dans les variables respectives.

Ça y est, votre partie codage est terminée.

4. Enregistrez votre projet en sélectionnant Fichier – Enregistrer. Donnez-lui le nom que vous aimez. Nous allons juste aller de l’avant et le nommer ‘envoyer un e-mail’. Vous pouvez maintenant exécuter le code pour voir s’il y a des erreurs en appuyant sur Image 1 bouton de la barre d’outils. Lorsque vous exécutez le code, il vous sera demandé l’autorisation d’accéder à vos données sur votre feuille de calcul Google.

Découvrir l\\\'article :  Comment fusionner des cellules dans Google Sheets

une. Cliquez sur Examiner les autorisations.

b. Vous recevrez alors un avertissement indiquant que votre application n’a pas été reconnue par Google et que vous ne devez continuer que si vous connaissez l’auteur. Eh bien, vous êtes l’auteur, donc évidemment cela ne vous dérange pas. cliquer sur Avancépuis faites défiler vers le bas et cliquez sur ‘Aller à envoyerEmail‘.

c. Lorsque vous obtenez la confirmation, cliquez simplement sur Permettre.

Voilà, vous trouverez un petit message en haut de l’écran de votre éditeur de script indiquant que votre script est en cours d’exécution.

image 2

Lorsque le message disparaît, votre code a fini de s’exécuter.

Si vous vérifiez la boîte de réception de l’adresse e-mail du destinataire, vous trouverez un e-mail de votre compte Gmail avec l’objet et le message que vous aviez dans vos cellules Google Sheet.

image 5

5. Ajoutons maintenant un bouton pour exécuter automatiquement notre script. Collez un dessin d’un bouton ou toute image de votre choix dans un coin de votre feuille :

Cliquez sur le bouton, sélectionnez les trois points dans le coin supérieur droit de celui-ci et sélectionnez ‘Attribuer un script‘. Ensuite, insérez le nom de votre fonction scriptée, qui dans notre cas est Envoyer un e-mail:

Une fois cela fait, vous pouvez simplement cliquer sur cette image lorsque vous souhaitez exécuter à nouveau votre script

6. Lorsque vous devez maintenant envoyer un e-mail, il vous suffit de cliquer sur ce bouton.

Bien sûr, cet exemple visait simplement à vous permettre de comprendre plus facilement la stratégie de codage de base lors de l’envoi d’e-mails à l’aide d’App Script. Bien sûr, cela aurait pu être plus facile si vous veniez d’envoyer l’e-mail directement depuis votre compte Gmail. Mais que se passe-t-il si vous souhaitez envoyer des e-mails à plusieurs destinataires ou uniquement à ceux qui remplissent certaines conditions ? C’est à ce moment que App Script peut s’avérer très utile.

Envoi d’un seul e-mail à plusieurs adresses dans Google Sheets

Supposons maintenant que vous ayez une liste de diffusion et que vous souhaitiez envoyer le même message à tous ou à certains d’entre eux. Pour plus de commodité, nous n’avons que trois adresses, mais vous pouvez en avoir plus. Nous avons la liste des adresses e-mail stockées dans Sheet1 et le message e-mail dans Sheet2.

image 4

Feuille 1

Envoyer un e-mail depuis Google Sheets

Feuille 2

Voici le code complet que vous devez saisir :

function sendEmail() {

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var sheet2=ss.getSheetByName('Sheet2');
var subject = sheet2.getRange(2,1).getValue();;
var message = sheet2.getRange(2,2).getValue();
var n=sheet1.getLastRow();
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,1).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}

}

Passons en revue le code ci-dessus ligne par ligne :

Dans les trois premières lignes, nous accédons aux deux feuilles et stockons leurs poignées dans des variables feuille 1 et feuille 2. Ensuite, aux lignes 4 et 5, nous créons des variables pour matière et message et leur attribuer leurs valeurs respectives. Ce matière reçoit la valeur de la cellule A2 de Sheet2 et message reçoit la valeur de la cellule B2 de Sheet2.

Passons maintenant à la partie principale de ce code. À la ligne 6, nous avons utilisé getLastRow() fonction pour obtenir le nombre de lignes (nombre d'adresses e-mail) dans feuille1.

var n=sheet1.getLastRow();

Étant donné que la liste d'adresses e-mail commence à partir de la deuxième ligne, la feuille contient en fait n-1 adresses e-mail.

Découvrir l\\\'article :  Google Sheet : Comment le maîtriser en quelques étapes ?

Les lignes 7, 8, 9 et 10 comprennent un pour la boucle.

La boucle for

Une boucle for a généralement le format général suivant :

for(<; <; <) {
<
}

La boucle prend un compteur (par exemple une variable, 'JE') et continue de l'augmenter d'un certain montant. Tant qu'un est vrai, la boucle continuera à répéter l'exécution des instructions à l'intérieur des accolades.

Comprenons la boucle for que nous avons utilisée dans notre code :

for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,1).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}

Ici, nous avons utilisé une variable 'je' qui compte. Nous l'avons d'abord initialisé à 2, car les adresses e-mail commencent à partir de la deuxième ligne. Ensuite, la condition (je < n+1) est vérifié. L'état est droitpuisque je est 2 et n+1 est 4 (puisqu'il n'y a que trois adresses email dans notre fiche). Parce que cette condition est droitexécuter les instructions entre accolades.

Tout d'abord, il obtient l'adresse e-mail dans la cellule (je,1). Depuis je = 2, la variable adresse e-mail contient la valeur de la cellule A2 de la feuille sheet1. Ce MailApp.sendEmail() fonction envoie alors un email à cette adresse avec matière et message.

Lorsque les instructions entre accolades sont exécutées, je est alors augmenté de 1 (je++). Alors maintenant je = 3. Encore une fois, il est vérifié sur l'état (je < n+1) est droit. C'est toujours vrai, donc les deux affirmations :

var emailAddress = sheet1.getRange(i,1).getValue();
MailApp.sendEmail(emailAddress, subject, message);

sera exécuté à nouveau. Ce temps adresse e-mail contient la valeur dans la cellule (3,1) ou A3. Encore celui-là MailApp.sendEmail() la fonction envoie message à cette adresse et je est à nouveau augmenté de 1.

Cela continue jusqu'à la condition je < n+1 est Faux. Cela signifie dès je = 4la condition devient fausse et la boucle s'arrête.

Lorsque vous exécutez ce code, vous trouverez des e-mails envoyés à toutes les adresses de votre Sheet1.

Utiliser un modèle d'e-mail pour envoyer des e-mails à plusieurs destinataires dans Google Sheets

La méthode ci-dessus est très pratique et aide vraiment à automatiser l'envoi d'e-mails lorsque vous devez envoyer le même e-mail à plusieurs personnes. Mais au lieu d'utiliser le même message électronique, il est plus logique d'envoyer des messages un peu plus personnalisés. La plupart du temps, il est logique d'en avoir un modèle d'un e-mail prêt puis adapter l'e-mail en fonction de son destinataire.

Supposons que vous disposiez d'une liste de noms de clients, d'adresses e-mail de clients et d'articles qu'ils ont commandés. Ceci est stocké dans Sheet1. Vous avez également Sheet2, qui contient un modèle de message à personnaliser avec le destinataire correspondant et commandé.

image 6

Feuille 1

image 8

Feuille 2

Voici le code complet que vous devez saisir :

function sendEmail() {

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var sheet2=ss.getSheetByName('Sheet2');
var subject = sheet2.getRange(2,1).getValue();
var n=sheet1.getLastRow();
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,2).getValue();
var name=sheet1.getRange(i,1).getValue();
var itemOrdered=sheet1.getRange(i,3).getValue();
var message = sheet2.getRange(2,2).getValue();

message=message.replace("",name).replace("",itemOrdered);
MailApp.sendEmail(emailAddress, subject, message);
}


}

Passons en revue le code ci-dessus ligne par ligne.

Les cinq premières lignes sont assez claires maintenant. Jetons un coup d'œil à ce qu'il y a à l'intérieur de la boucle for. Aux lignes 7, 8 et 9, on récupère l'adresse e-mail, le nom et l'article commandé, une ligne à la fois :

var emailAddress = sheet1.getRange(i,2).getValue();
var name=sheet1.getRange(i,1).getValue();
var itemOrdered=sheet1.getRange(i,3).getValue();

À la ligne 10, nous acquérons le modèle de message et le stockons dans une variable nommée message.

var message = sheet2.getRange(2,2).getValue();

Ensuite, dans le modèle de message, nous remplacerons les mots "” avec la valeur actuelle dans Nom variable. Nous voulons également remplacer le mot "” avec la valeur actuelle dans marchandises commandées variable.

Donc, à la ligne 11, nous utilisons remplacer() fonctionner deux fois pour effectuer ces deux tâches. Le résultat après le remplacement est à nouveau enregistré dans la variable message.

message=message.replace("",name).replace("",itemOrdered);

Maintenant que nous avons le nôtre adresse e-mail, matière et en conséquence messagenous venons de les mettre ensemble en un seul MailApp.sendEmail() fonction et envoyer l'e-mail à notre adresse cible. Nous le faisons encore et encore pour chaque itération de la boucle for jusqu'à ce que nous en ayons fini avec toutes les adresses e-mail de notre liste.

Voici à quoi ressemble l'un de nos derniers e-mails.

Envoyer un e-mail depuis Google Sheets

Envoi de différents e-mails à plusieurs destinataires dans Google Sheets

Enfin, examinons un scénario dans lequel vous souhaitez envoyer différents e-mails à différentes adresses e-mail.

Envoyer un e-mail depuis Google Sheets

C'est assez simple. Nous avons juste besoin de prendre les valeurs de cellule pour chaque message électronique une par une dans la même boucle for, de la même manière que nous avons pris les valeurs de cellule pour les adresses e-mail et les noms. Voici le code complet :

function sendEmail() {

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var n=sheet1.getLastRow();
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,1).getValue();
var subject = sheet1.getRange(i,2).getValue();
var message = sheet1.getRange(i,3).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}

}

Conclusion

Dans cet article, nous avons vu comment utiliser un App Script pour envoyer automatiquement des e-mails en un clic.

Nous avons vu comment vous pouvez envoyer même e-mail à plusieurs adresses et comment vous pouvez envoyer de nombreux e-mails personnalisés à plusieurs adresses. Nous avons également vu comment vous pouvez utiliser un modèle d'e-mail et le personnaliser en fonction du destinataire lorsque vous envoyez l'e-mail.

Nous espérons que vous avez trouvé ce tutoriel utile. Nous aimerions avoir vos commentaires et suggestions…

Julien

Laisser un commentaire