Le passage d’un utilisateur « classique » à un utilisateur « expert » se résume souvent à un mot : l’automatisation. Pourquoi perdre 30 minutes à copier-coller des emails personnalisés quand un script peut le faire pour vous en 10 secondes ?
1. Structurez vos données
Pour que le script fonctionne, votre feuille de calcul doit être organisée. Voici la structure recommandée :
| Colonne A (1) | Colonne B (2) | Colonne C (3) |
| Prénom | Statut | |
| Jean | jean.dupont@email.com | |
| Marie | marie.curie@email.com |
2. Le script moderne (ES6+)
Ouvrez l’éditeur via Extensions > Apps Script et remplacez le code existant par celui-ci.
/**
* Envoie des emails personnalisés à partir des données de la feuille active.
*/
const envoyerEmailsAutomatiques = () => {
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getActiveSheet();
// Récupération de toutes les données d'un coup
const plageDonnees = feuille.getDataRange().getValues();
// On sépare l'en-tête du reste des données avec la décomposition (ES6)
const [enTete, ...lignes] = plageDonnees;
lignes.forEach((ligne, index) => {
// Extraction propre des variables par ligne
const [prenom, email, statut] = ligne;
const numeroDeLigne = index + 2; // +2 car l'index commence à 0 et on a retiré l'en-tête
// On n'envoie l'email que si le statut n'est pas déjà "Envoyé"
if (statut !== "Envoyé" && email) {
const sujet = `Bonjour ${prenom} - Information importante`;
const corpsMessage = `Cher ${prenom},\n\nCeci est un message automatisé envoyé avec élégance depuis Google Sheets.\n\nÀ bientôt !`;
try {
MailApp.sendEmail(email, sujet, corpsMessage);
// Mise à jour visuelle dans la feuille de calcul
feuille.getRange(numeroDeLigne, 3).setValue("Envoyé");
console.log(`Succès : Email envoyé à ${email}`);
} catch (erreur) {
console.error(`Erreur lors de l'envoi à ${email} : ${erreur.message}`);
}
}
});
};
3. Pourquoi ce code est-il « moderne » ?
Quelques éléments pour vous expliquer la modernité du code.
constetlet: On oublievar. Cela permet de mieux gérer la portée des variables et d’éviter les bugs imprévus.- Décomposition (Destructuring) : La ligne
const [prenom, email, statut] = ligne;permet d’assigner les valeurs des colonnes à des noms clairs en une seule étape. C’est beaucoup plus lisible queligne[0]. - Littéraux de gabarits : Utiliser
`Bonjour ${prenom}`au lieu de"Bonjour " + prenomévite les erreurs de concaténation et rend le texte plus naturel à rédiger. - La méthode
forEach: Plus moderne et élégante que la bouclefortraditionnelle, elle permet de parcourir les lignes de manière fluide.
4. Le petit « plus » : l’automatisation totale
Pour que ce script soit vraiment puissant, montrez à vos lecteurs comment configurer un Déclencheur (Trigger).
En cliquant sur l’icône de l’horloge dans le menu de gauche d’Apps Script, ils peuvent configurer l’envoi pour qu’il se produise toutes les nuits, ou à chaque fois qu’un formulaire est envoyé.
Note de sécurité : Lors de la première exécution, Google vous demandera d’autoriser le script à accéder à vos emails. C’est tout à fait normal : vous devenez votre propre développeur d’applications !