J'adore automatiser les tâches qui prennent du temps pour nous permettre de nous concentrer sur l'essentiel. Ici, je vous explique comment créer un modèle d'email de relance intelligent qui adapte automatiquement le ton du message selon l'état du paiement, en combinant Google Sheets, Gmail et Google Apps Script. J'ai mis en pratique cette approche pour mes propres clients et elle m'a permis de gagner des heures chaque mois tout en gardant une communication professionnelle et adaptée.
Pourquoi automatiser les relances et adapter le ton ?
Envoyer la même relance générique à tous les clients n'est ni efficace ni empathique. Un client qui a simplement oublié un paiement mérite un rappel poli ; un client en retard de plusieurs semaines nécessite un message plus ferme (ou un appel). Automatiser permet de :
Ce dont vous avez besoin
Avant de commencer, préparez :
Structure du Google Sheet
Voici les colonnes que j'utilise (libre à vous d'en ajouter) :
| A | Invoice ID |
| B | Client Name |
| C | Client Email |
| D | Amount |
| E | Due Date |
| F | Status |
| G | Days Overdue (formule) |
| H | Last Reminder Sent |
| I | Tone |
Pour la colonne "Days Overdue", utilisez une formule comme =IF(TODAY()-E2>0, TODAY()-E2, 0). La colonne "Status" peut être : Paid, Pending, Overdue.
Définir les règles de ton (exemples)
J'aime garder des règles simples et mesurables :
| Status | Days Overdue | Tone |
| Paid | — | Remerciement |
| Pending | 0 (avant échéance) | Rappel amical |
| Overdue | 1–7 | Rappel poli |
| Overdue | 8–30 | Relance ferme |
| Overdue | >30 | Relance urgente / escalade |
Modèles d'emails (exemples)
Créez des templates dans un onglet dédié ou directement dans le script. Voici des exemples courts :
Le cœur : Google Apps Script
Le script va lire les lignes du Sheet, déterminer le statut et la tonalité, remplacer les variables dans le template, puis envoyer l'email via GmailApp. Activez un déclencheur (trigger) quotidien pour automatiser.
Exemple simplifié de script (à coller dans Extensions > Apps Script)
<!-- Le code ci-dessous doit être collé tel quel dans l'éditeur Apps Script -->
function sendSmartReminders() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Factures');
var data = ss.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var row = data[i];
var id = row[0], name = row[1], email = row[2], amount = row[3];
var due = new Date(row[4]); var status = row[5]; var daysOver = row[6];
var tone = decideTone(status, daysOver);
if (tone) {
var subject = buildSubject(id, tone);
var body = buildBody(tone, name, id, due, amount);
GmailApp.sendEmail(email, subject, body);
ss.getRange(i+1, 8).setValue(new Date()); // Last Reminder Sent
ss.getRange(i+1, 9).setValue(tone); // Tone
}
}
}
function decideTone(status, daysOver) {
if (status == 'Paid') return 'Remerciement';
if (status == 'Pending') return 'Rappel amical';
if (status == 'Overdue') {
if (daysOver <= 7) return 'Rappel poli';
if (daysOver <= 30) return 'Relance ferme';
return 'Escalade';
}
return null;
}
function buildSubject(id, tone) { return '['+tone+'] Relance facture '+id; }
function buildBody(tone, name, id, due, amount) {
// Simple exemples — remplacez par vos templates réels
if (tone == 'Remerciement') return 'Bonjour '+name+','+'%0A%0AMerci pour votre paiement de '+amount+'.';
if (tone == 'Rappel amical') return 'Bonjour '+name+','+'%0A%0ARappel : votre facture '+id+' est due le '+due.toLocaleDateString()+'.';
if (tone == 'Rappel poli') return 'Bonjour '+name+','+'%0A%0ANous n\'avons pas reçu le paiement de la facture '+id+'.';
if (tone == 'Relance ferme') return 'Bonjour '+name+','+'%0A%0AVotre facture '+id+' est en retard. Merci de régler sous 7 jours.';
return 'Bonjour '+name+','+'%0A%0ANotre précédent message est resté sans réponse concernant la facture '+id+'.';
}
Tests et réglages
Avant d'automatiser en production, testez le script sur quelques lignes de test et envoyez les emails vers votre propre boite. Vérifiez :
Personnalisation avancée
Quelques idées que j'applique selon le contexte :
Quelques précautions
Automatiser ne veut pas dire devenir insensible. Voici ce que je vérifie toujours :
Si vous voulez, je peux vous fournir un exemplaire de feuille Google Sheet prête à l'emploi et un script commenté plus complet (HTML, envoi conditionnel, logs). Dites-moi le niveau de personnalisation souhaité (par client, par montant, intégration paiement) et je vous prépare ça.