Dans ce tutoriel, nous allons voir comment envoyer des mails simples via Google Apps Script, en se basant sur les données d’un Google Sheets.

1. Formatage du Google Sheet

Avant toute chose, il faut formater correctement les données dans le Google Sheets. Partons sur un exemple basique, où nous avons :

  • un email
  • un sujet
  • le contenu du mail
Tableau Google Sheets contenant une liste d'emails à envoyer, avec les colonnes Email, Sujet et Mail.

2. Principe du script

L’idée du script est la suivante :

Schéma illustrant les étapes d’un script Google Apps Script pour envoyer des emails à partir de données Google Sheets : accéder aux données, ignorer l’en-tête, parcourir chaque ligne, extraire les informations, puis envoyer l’email.
  1. Accéder aux données du Google Sheets : Le script récupère les informations contenues dans la feuille de calcul, puis saute la première ligne qui sert d’en-tête
  2. Parcourir les lignes du tableau : Chaque ligne est analysée une à une pour extraire l’adresse email, le sujet et le corps du mail.
  3. Envoyer le mail : Pour chaque ligne, un email est envoyé basé sur les informations présentes sur la ligne

2. Le script

Pour ouvrir l’éditeur Apps Script depuis Google Sheets, allez dans :
Extensions > Apps Script

Si besoin, vous pouvez vous référer au guide Débuter avec Google Apps Script. Vous pouvez utiliser cette fonction et la modifier selon vos besoins. Elle est très commentée pour vous aider à comprendre le fonctionnement.

function sendEmailsFromSheet() {

  // Indiquez le nom de votre feuille Google Sheets 
  const SHEET_NAME = "Emails"

  // On récupère la feuille Google Sheets
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
  // On extrait toutes les données de la feuille 
  const data = sheet.getDataRange().getValues(); 

  // On vérifie s'il y a des données
  // S'il y a moins de 2 lignes (les titres + une ligne de données )
  // On arrête la fonction
  if (data.length < 2) return;

  // On enlève la première ligne (qui contient les titres)
  // On considère qu'il y a 
  // - En colonne 1 : le mail
  // - En colonne 2 : le sujet
  // - En colonne 3 : le texte à envoyer (le corps du mail)
  // Et on envoie le mail en utilisant la fonction MailApp.sendEmail
  data.slice(1).forEach(([email, subject, body]) => {
    // Si les 3 colonnes sont remplies, alors on envoie le mail
    if (email && subject && body) {
      MailApp.sendEmail({
        to: email,
        subject: subject,
        body: body
      });
    }
  });
Logger.log("Mails envoyés")
}

📌 Résumé du fonctionnement

  1. Le script récupère les données contenues dans la feuille Emails
  2. Il vérifie qu’il y a au moins deux lignes (une ligne de titres + une ligne de données)
  3. Il ignore la première ligne (qui contient les titres)
  4. Il parcourt chaque ligne de données et récupère l’email, le sujet et le message
  5. Si toutes les informations sont renseignées, il envoie l’email avec la fonction MailApp.sendEmail()
  6. Une fois toutes les lignes parcourues, il affiche le message Mails envoyés dans la console

3. Exécuter le script

Pour exécuter la fonction, cliquez sur Exécuter.
Si c’est la première fois, vous aurez besoin d’autoriser le script.

Capture d’écran de l’éditeur Google Apps Script montrant un script nommé sendEmailsFromSheet et le bouton "Exécuter" mis en évidence pour lancer le script d’envoi d’emails depuis une feuille Google Sheets

Le script va s’exécuter et les mails seront envoyés pour chaque ligne.

Journal d'exécution Google Apps Script indiquant que les emails ont été envoyés avec succès. Le message "Mails envoyés" s'affiche dans la console de logs

Une fois exécuté, un message Mails envoyés s’affiche dans le journal d’exécution.

Vue de la boîte de réception Gmail avec un email reçu depuis le script Apps Script. Le sujet est "Test" et le corps commence par "Bonjour, voici votre première notification", ce qui correspond au mail envoyé par le script.

Côté Gmail, le mail s’est envoyé correctement.

Erreurs courantes

Voici les erreurs courantes que vous pouvez rencontrer sur ce script, et comment les résoudre.

Cannot read properties of null (reading ‘getDataRange’)

Message d’erreur affiché dans le journal Google Apps Script indiquant : "TypeError: Cannot read properties of null (reading 'getDataRange')", signalant une erreur de récupération de la feuille active.

Cette erreur indique que les données du Sheet n’ont pas chargé correctement. Le plus souvent, c’est parce que le nom de la feuille Google Sheets dans la constante SHEET_NAME ne correspond pas avec le vrai nom de la feuille.

Vérifiez que nom de l’onglet Emails et le nom dans le script ligne 4const SHEET_NAME = "Emails" soient identiques :

Capture de l’onglet actif dans Google Sheets nommé "Emails", utilisé par le script pour lire les données et envoyer les emails
Extrait du code Google Apps Script déclarant la constante SHEET_NAME = "Emails", utilisée pour cibler la feuille contenant les emails à envoyer.

Catégorisé dans :

Google Apps Script,