Informer vos contacts de vos nouvelles coordonnées avec Google Apps Script

Vous avez sans doute déjà dû informer vos contacts d’un changement de numéro de téléphone ou d’adresse. Plutôt que de le faire manuellement, vous pouvez automatiser cette tâche grâce à Google Apps Script. Ce script permet d’envoyer un email personnalisé à chaque contact, avec un fichier vCard (VCF) en pièce jointe contenant vos coordonnées à jour.

Dans cet article, nous allons vous montrer comment créer un script qui :

  • Envoie un email personnalisé à chaque contact.
  • Joint un fichier vCard à chaque email, facilitant la mise à jour des contacts.

Pourquoi utiliser un fichier vCard ?

Le format vCard, largement utilisé pour l’échange d’informations de contact, simplifie l’importation de ces données. Vos contacts peuvent ainsi importer directement vos coordonnées dans leurs téléphones ou logiciels de messagerie, sans avoir à les saisir manuellement. Cela réduit le risque d’erreurs et rend le processus beaucoup plus rapide.

Fonctionnement du script

Le script Google Apps Script extrait les contacts depuis une feuille Google Sheets. Ensuite, il envoie un email personnalisé à chaque destinataire, en y joignant un fichier vCard (VCF) contenant vos informations actualisées. De plus, une colonne “Statut” permet de suivre les envois et d’éviter de renvoyer le même email.

Le code à adapter

Voici un exemple de script que vous pouvez personnaliser :

function envoyerEmails() {
  // Ouvre le Google Sheets actif
  const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // Récupère toutes les données de la feuille
  const donnees = feuille.getDataRange().getValues();
  
  // Détermine l'index de la colonne "Statut" (dernière colonne)
  const statutColIndex = donnees[0].length - 1;
  
  let emailCount = 0;
  const dailyLimit = 90; // Limite quotidienne d'envoi

  // Parcourt chaque ligne à partir de la ligne 2 (pour ignorer l'en-tête)
  donnees.slice(1).forEach((ligne, index) => {
    if (emailCount >= dailyLimit) {
      return; // Arrête d'envoyer des emails si la limite est atteinte
    }
    
    const [prenom, email, statut] = ligne;
    
    // Vérifie si le statut est déjà "Envoyé" pour éviter de renvoyer
    if (email && statut !== "Envoyé") {
      const sujet = 'Mise à jour de mes coordonnées';
      
      // Le contenu HTML de l'email avec un texte simple
      const messageHtml = `
      <html>
        <head>
          <style>
            body {
              font-family: Arial, sans-serif;
              background-color: #f9f9f9;
              color: #333;
              margin: 0;
              padding: 20px;
            }
            .container {
              background-color: #fff;
              padding: 20px;
              margin: 0 auto;
              border: 1px solid #ddd;
              max-width: 800px;
              text-align: left;
            }
            p {
              font-size: 14px;
              line-height: 1.6;
              color: #555;
            }
            .footer {
              font-size: 14px;
              color: #777;
              margin-top: 20px;
            }
          </style>
        </head>
        <body>
          <div class="container">
            <p>Bonjour ${prenom},</p>
            <p>Je voulais t'informer que j'ai mis à jour mes coordonnées.</p>
            <p>Je te remercie de bien vouloir mettre à jour ma fiche dans tes contacts.</p>
            <p>Je joins un fichier VCF avec mes informations à jour.</p>
            <div class="footer">
              À bientôt,<br>
              <strong>Nom Prénom</strong>
            </div>
          </div>
        </body>
      </html>`;

      // Création du contenu du fichier VCF (vCard) anonymisé
      const vcfContent = `
BEGIN:VCARD
VERSION:3.0
N:Nom;Prénom;;Mr.;
FN:Nom Prénom
TEL;TYPE=cell,voice:+33123456789
EMAIL;TYPE=home:email@example.com
ADR;TYPE=home:;;Adresse;Ville;;CodePostal;Pays
BDAY:1970-01-01
REV:${new Date().toISOString()}
END:VCARD`;

      // Création d'un fichier blob pour le fichier VCF
      const vcfFile = Utilities.newBlob(vcfContent.trim(), 'text/vcard', `Contact_Nom_Prenom.vcf`);

      // Envoie de l'email avec le format HTML
      MailApp.sendEmail({
        to: `${prenom} <${email}>`,
        subject: sujet,
        htmlBody: messageHtml,
        name: "Nom Prénom",  // Ajout du nom complet comme expéditeur
        attachments: [vcfFile]
      });

      // Mise à jour du statut dans la feuille de calcul (colonne "Statut")
      feuille.getRange(index + 2, statutColIndex + 1).setValue("Envoyé");

      emailCount++; // Incrémente le compteur d'emails envoyés
    }
  });
}

Explication du code

Le script commence par ouvrir la feuille Google Sheets active et par récupérer les données de chaque contact. À chaque ligne, si l’email n’a pas encore été envoyé, le script génère un email personnalisé et y joint un fichier vCard avec les informations de contact à jour. Ensuite, le statut est mis à jour pour éviter l’envoi multiple.

Recommandations supplémentaires

Avant d’envoyer les emails à l’ensemble de vos contacts, il est recommandé de tester le script avec un petit groupe. Cela vous permet de vérifier que tout fonctionne correctement. Par ailleurs, veillez à tester la compatibilité du fichier vCard sur différents appareils (Android, iOS, etc.). Enfin, n’oubliez pas de respecter les quotas d’envoi d’emails quotidiens imposés par Google.


L’atelier informatique vous accompagne dans vos projets technologiques en vous proposant des tutoriels et des solutions pour optimiser vos tâches quotidiennes.