ALL Apps Scripts Google Sheets

Scripts : le publipostage entre Google Sheets et Gmail (Merge)

Ecrit par Thierry

Apprenez donc à créer le publipostage avec Gmail et envoyer des messages électroniques personnalisés. Vous pouvez également ajouter des pièces jointes aux e-mails de masse.

Comme chaque semaine, un nouvel article sur Google Apps Script.

Aujourd’hui, un petit script de Labnol pour faire du publipostage personnalisé entre Google Sheets et Gmail. Les données sont rentrées dans le tableur (Nom, email et texte) et en cliquant sur un bouton, les mails partent.

Voici la démonstration de ce script de publipostage :

Dans la colonne E, je complète :

  • Objet du mail
  • Salutations
  • Le corps du message
  • Le nom
  • L’adresse email
  • ID d’un doc stocké sur le Drive
  • Si je souhaite être en copie

Puis j’importe les destinataires à l’aide d’un groupe de contacts créé dans Google Contacts, je complète à la main si besoin… et j’envoie enfin le mail avec la fonction Start…

Le lien vers la copie du tableur pour utiliser cette fonction.

Pour rédiger le mail et obtenir sans forcer la version HTML, je vous conseille ce site https://htmlmail.pro/

Au niveau du script, vous trouverez toutes les infos dans le menu Outils / Editeur de scripts :

Les lignes de code sont ici :

// how many mails can you send today? (AFFICHE LE NBRE DE MESSAGES MAX PAR JOUR)

function labnolQuota() {
var mySheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
mySheet.getRange(« E3 »).setValue(
« You can send a maximum of  » + MailApp.getRemainingDailyQuota() +  » email messages today!! »);
}

// create the menu on opening the Google sheet (CREER LE MENU DANS GSHEETS)

function onOpen() {
var menu = [
{name: « Step 1: Clear Canvas (Reset) », functionName: « labnolReset »},
{name: « Step 2: Import Google Contacts », functionName: « labnolGetContacts »},
{name: « Step 3: Start Mail Merge », functionName: « labnolSendEmail »}
];

var mySheet = SpreadsheetApp.getActiveSpreadsheet();
mySheet.addMenu(« Mail Merge », menu);
labnolQuota();
}

// pull your Google Contacts in the spreadsheet (IMPORT DES CONTACTS DEPUIS GOOGLE CONTACTS)

function labnolGetContacts() {
var groupName = Browser.inputBox(« Google Contacts Group »,
« Enter the Google Contacts Group Name: », Browser.Buttons.OK_CANCEL);

if (groupName != « cancel ») {
var mySheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var myGroup = ContactsApp.getContactGroup(groupName);

if (myGroup) {
var myContacts = myGroup.getContacts();
for (i=0; i < myContacts.length; i++) {
var myContact = [[myContacts[i].getFullName(), myContacts[i].getPrimaryEmail(), «  »]];
mySheet.getRange(i+2, 1,1,3).setValues(myContact);
}

if ( myContacts.length == 0)
Browser.msgBox(« Google Contacts Error »,
« Sorry, Gmail could not find any contacts in the specified Group. », Browser.Buttons.OK);
}
else
Browser.msgBox(« Google Contacts Error »,
« Sorry, the specified Google Contacts Group does not exist. », Browser.Buttons.OK);
}
}

// clear all fields with a click (EFFACE TOUS LE CHAMPS DU TABLEUR)

function labnolReset() {

var mySheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
mySheet.getRange(« E5 »).clearContent();
mySheet.getRange(« E7 »).clearContent();
mySheet.getRange(« E9 »).clearContent();
mySheet.getRange(« E11 »).clearContent();
mySheet.getRange(« E13 »).clearContent();
mySheet.getRange(« E15 »).clearContent();
mySheet.getRange(« E17 »).clearContent();
mySheet.getRange(« A2:C98 »).clearContent();
labnolQuota();
}

// let the magic begin.. send your emails (ENVOI DES EMAILS)

function labnolSendEmail() {

var mySheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

if ((mySheet.getRange(« E5 »).getValue() == «  ») || (mySheet.getRange(« E7 »).getValue() == «  ») ||
(mySheet.getRange(« E9 »).getValue() == «  ») || (mySheet.getRange(« E11 »).getValue() == «  ») ||
(mySheet.getRange(« E13 »).getValue() == «  »)) {
Browser.msgBox(« Error », « Please fill all the required fields! », Browser.Buttons.OK);
return;
}

var emailSubject = mySheet.getRange(« E5 »).getValue();
var emailSalutation = mySheet.getRange(« E7 »).getValue();
var emailBody = mySheet.getRange(« E9 »).getValue();
var emailYourName = mySheet.getRange(« E11 »).getValue();
var emailYourAddr = Session.getUser().getEmail();
var replyToAddr = mySheet.getRange(« E13 »).getValue();
var file = mySheet.getRange(« E15″).getValue();
var attachmentID = file?DocsList.getFileById(file): » »;
var emailBCC = mySheet.getRange(« E17 »).getValue();

var myContact = mySheet.getDataRange().getValues();

for (i=1; i < myContact.length; i++) {
var person = myContact[i];
if (person[0] != «  » && person[1] != «  » && person[2] != « OK ») {
var emailMsg = emailSalutation +  »  » + person[0] + « ,

 » + emailBody +  »

« ;
var advancedArgs = {htmlBody:emailMsg, name:emailYourName, replyTo:replyToAddr};

if (file)
advancedArgs[« attachments »] = attachmentID;

if (emailBCC == « YES »)
advancedArgs[« bcc »] = emailYourAddr;

GmailApp.sendEmail(person[1], emailSubject, emailMsg, advancedArgs);
mySheet.getRange(i+1,3).setValue(« OK »);
}
}
labnolQuota();
SpreadsheetApp.flush();
}

Une petite vidéo du codeur (cela date un peu mais ça peut aider notamment à trouver l’ID d’un document sur le Drive) :

Concernant les limites :

Combien de messages puis-je envoyer par jour ?
Les utilisateurs de Gmail peuvent envoyer des courriels à 100 destinataires par jour alors que la limite quotidienne pour les comptes G Suite est de 2 000 bénéficiaires par jour. Attention, si vous désirez recevoir une copie, il faudra diviser par 2 ce quota. Limite d’envoi dans Gmail

Quelle est la politique de confidentialité ? Pourquoi le publipostage  nécessite l’ accès à mes Gmail, Google Contacts, etc.
Le script a besoin d’ accéder à Gmail car il envoie des emails à partir de votre compte Gmail. Il a besoin d’accéder à Google Drive pour récupérer des pièces jointes et nécessite l’ accès à Google Contacts pour les importer dans la feuille de Google. Vos données restent confidentielles et ne sont jamais partagées avec des tiers.

Notez cette information
[Total: 0 Average: 0]

A propos de l'auteur

Thierry

Thierry VANOFFE, consultant, formateur, coach G Suite.
Passionné et fasciné par Google, ce blog me permet de partager cette passion et distiller tutos, trucs, astuces, guides sur les outils Google.
N'hésitez pas à me solliciter pour vos formations en ligne ou en présentiel.

Laisser un commentaire

Abonnez-vous à la newsletter hebdo du lundi.

Recevez chaque lundi les 7 news, trucs et astuces sur G Suite.

L'abonnement à la newsletter a été réalisé avec succès !

Share This

Share This

Share this post with your friends!