Comment envoyer le contenu d’une feuille de calcul par email ?

Introduction

Ce script Google Apps Script vous permet d’envoyer automatiquement un email quotidien contenant le contenu d’une feuille de calcul Google Sheets. Ainsi, vous pourrez tenir vos collaborateurs informés des dernières mises à jour de votre tableau.

Afin de mieux comprendre le cas d’usage, je vous présente à gauche le contenu de la feuille de calcul exemple et à droite, vous avez le résultat dans le contenu du mail envoyé.

La difficulté était de proposer un minimum d’élégance dans le rendu du mail envoyé. Ainsi, je vous propose dans le script une fonction de mise en page du tableau.

Fonctionnalités

  • Récupération des données : Le script extrait les données de la feuille de calcul active.
  • Génération d’un tableau HTML : Les données sont ensuite transformées en un tableau HTML pour une meilleure lisibilité dans l’email.
  • Envoi d’un email : Le tableau HTML est envoyé par email à une adresse spécifiée.

Mise en place du script

D’abord, nous allons voir comment créer un script Google Apps Script. Ensuite, nous allons apprendre à configurer le script pour qu’il envoie un email quotidien. Enfin, nous allons tester le script et le déboguer si nécessaire.

1. Créer un nouveau script Google Apps Script

  • Ouvrez votre feuille de calcul Google Sheets depuis le lien https://sheets.new.
  • Indiquez un titre à votre fichier
  • Cliquez sur Extensions > Apps scripts.
  • Un nouvel onglet « Éditeur de scripts » s’ouvrira.
  • Collez le code du script dans l’éditeur.

La difficulté

2. Remplacer les valeurs par défaut

  • Recherchez la ligne to: "contact@atelier-informatique.com" et remplacez l’adresse email par celle du destinataire de l’email.
  • Recherchez la ligne feuille: "Feuille 1" et remplacez le nom de la feuille par celui de la feuille de calcul dont vous souhaitez envoyer les données.

3. Définir l’exécution du script

  • Option 1 : Exécution manuelle
    • Cliquez sur le bouton Exécuter dans l’éditeur de scripts.
    • Le script s’exécutera et enverra un email avec le contenu de la feuille de calcul.
  • Option 2 : Exécution automatique (planification)
    • Cliquez sur Modifier > Déclencheurs d’événements > Ajouter un déclencheur.
    • Sélectionnez Choisissez parmi la liste des fonctions disponibles et choisissez envoyerEmailQuotidien.
    • Sélectionnez la fréquence d’exécution du script (par exemple, quotidiennement).
    • Cliquez sur Enregistrer.

4. Tester le script

  • Modifiez le contenu de la feuille de calcul.
  • Exécutez le script manuellement ou attendez l’exécution automatique.
  • Vérifiez que l’email a bien été envoyé avec le contenu mis à jour.

Avantages

  • Gain de temps: Automatisation de l’envoi d’emails quotidiens.
  • Communication efficace: Partage des informations importantes avec vos collaborateurs.
  • Suivi des modifications: Permet de suivre les changements apportés au tableau.

Améliorations possibles

  • Ajout de personnalisation: Vous pouvez personnaliser le contenu de l’email en ajoutant un message d’introduction ou de conclusion.
  • Mise en forme du tableau: Vous pouvez personnaliser la mise en forme du tableau HTML pour le rendre plus visuel.
  • Ajout de pièces jointes: Vous pouvez joindre d’autres fichiers à l’email, comme des rapports ou des images.

Conclusion

Ce script est un outil simple et efficace pour envoyer automatiquement un email quotidien avec le contenu d’une feuille de calcul Google Sheets. Vous pouvez l’utiliser pour améliorer la communication et la collaboration au sein de votre équipe.

Le code

function envoyerEmailQuotidien() {
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = classeur.getActiveSheet();
  var dataRange = feuille.getDataRange();
  var valeurs = dataRange.getValues();

  var contenuEmail = "Contenu du tableau : <br><br>";
  var htmlTableau = genererHtmlTableau(valeurs);
  contenuEmail += htmlTableau;

  MailApp.sendEmail({
    to: "contact@atelier-informatique.com",
    subject: "Contenu quotidien du tableau",
    htmlBody: contenuEmail,
    contentType: "text/html", // Indique le type de contenu comme HTML
  });
}

function genererHtmlTableau(valeurs) {
  var html = "<table style='border-collapse: collapse;'>";
  var derniereLigneNonVide = trouverDerniereLigneNonVide(valeurs);
  if (derniereLigneNonVide !== -1) {
    for (var i = 0; i <= derniereLigneNonVide; i++) {
      var ligne = valeurs[i];
      html += "<tr>";
      for (var j = 0; j < ligne.length; j++) {
        html += "<td style='border: 1px solid black; padding: 8px;'>" + ligne[j] + "</td>";
      }
      html += "</tr>";
    }
  }
  html += "</table>";
  return html;
}

function trouverDerniereLigneNonVide(valeurs) {
  for (var i = valeurs.length - 1; i >= 0; i--) {
    var ligne = valeurs[i];
    for (var j = 0; j < ligne.length; j++) {
      if (ligne[j] !== "") {
        return i; // Retourne l'index de la dernière ligne non vide
      }
    }
  }
  return -1; // Retourne -1 si toutes les lignes sont vides
}

Laisser un commentaire