Créer une interface Google Sheets pour compter les emails envoyés
L’atelier informatique
·
Dans cet article, nous allons voir comment créer une interface utilisateur conviviale dans Google Sheets qui permet de compter le nombre d’emails envoyés à un destinataire sur une période donnée. Nous allons utiliser Google Apps Script pour intégrer cette fonctionnalité directement dans un menu personnalisé, avec une boîte de dialogue intuitive pour l’utilisateur.
Pourquoi ce développement ?
Google Sheets est un outil puissant pour analyser et organiser des données. En intégrant un script Apps Script, nous pouvons l’enrichir avec des fonctionnalités avancées.
Ce script permet de :
Analyser votre activité Gmail directement depuis Google Sheets.
Automatiser le comptage des emails envoyés à un destinataire spécifique.
Rendre l’outil accessible facilement via un menu personnalisé.
Étape 1 : Créer le script Apps Script
Tout d’abord, ouvrez un fichier Google Sheets et accédez à Extensions > Apps Script.
Copiez-collez le code suivant dans l’éditeur :
Code principal (Code.gs)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/**
* Ajoute un menu personnalisé dans Google Sheets pour ouvrir l'interface utilisateur.
*/
functiononOpen(){
const ui = SpreadsheetApp.getUi();
ui.createMenu('Outils Gmail')// Nom du menu
.addItem('Compter les emails envoyés', 'showEmailCountUI')// Élément du menu
.addToUi();
}
/**
* Affiche une boîte de dialogue pour saisir les paramètres et compter les emails envoyés.
*/
functionshowEmailCountUI(){
const html = HtmlService.createHtmlOutputFromFile('Index')
.setWidth(400)
.setHeight(350);
SpreadsheetApp.getUi().showModalDialog(html, 'Compter les emails envoyés');
}
/**
* Compte le nombre d'emails envoyés par Gmail à un destinataire sur une période donnée.
*
* @param {string} destinataire L'adresse email du destinataire.
* @param {string} dateDebut La date de début (ex : "2023/01/01").
* @param {string} dateFin La date de fin (ex : "2023/01/31").
* @return {number|string} Le nombre d'emails envoyés, ou un message d'erreur.
return `Erreur lors du comptage des emails : ${erreur.message}`;
}
}
/**
* Ajoute un menu personnalisé dans Google Sheets pour ouvrir l'interface utilisateur.
*/
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Outils Gmail') // Nom du menu
.addItem('Compter les emails envoyés', 'showEmailCountUI') // Élément du menu
.addToUi();
}
/**
* Affiche une boîte de dialogue pour saisir les paramètres et compter les emails envoyés.
*/
function showEmailCountUI() {
const html = HtmlService.createHtmlOutputFromFile('Index')
.setWidth(400)
.setHeight(350);
SpreadsheetApp.getUi().showModalDialog(html, 'Compter les emails envoyés');
}
/**
* Compte le nombre d'emails envoyés par Gmail à un destinataire sur une période donnée.
*
* @param {string} destinataire L'adresse email du destinataire.
* @param {string} dateDebut La date de début (ex : "2023/01/01").
* @param {string} dateFin La date de fin (ex : "2023/01/31").
* @return {number|string} Le nombre d'emails envoyés, ou un message d'erreur.
*/
function compterEmailsEnvoyes(destinataire, dateDebut, dateFin) {
try {
const query = `from:me to:${destinataire} after:${dateDebut} before:${dateFin}`;
const threads = GmailApp.search(query);
let count = 0;
threads.forEach(thread => {
count += thread.getMessages().length;
});
return count;
} catch (erreur) {
return `Erreur lors du comptage des emails : ${erreur.message}`;
}
}
/**
* Ajoute un menu personnalisé dans Google Sheets pour ouvrir l'interface utilisateur.
*/
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('Outils Gmail') // Nom du menu
.addItem('Compter les emails envoyés', 'showEmailCountUI') // Élément du menu
.addToUi();
}
/**
* Affiche une boîte de dialogue pour saisir les paramètres et compter les emails envoyés.
*/
function showEmailCountUI() {
const html = HtmlService.createHtmlOutputFromFile('Index')
.setWidth(400)
.setHeight(350);
SpreadsheetApp.getUi().showModalDialog(html, 'Compter les emails envoyés');
}
/**
* Compte le nombre d'emails envoyés par Gmail à un destinataire sur une période donnée.
*
* @param {string} destinataire L'adresse email du destinataire.
* @param {string} dateDebut La date de début (ex : "2023/01/01").
* @param {string} dateFin La date de fin (ex : "2023/01/31").
* @return {number|string} Le nombre d'emails envoyés, ou un message d'erreur.
*/
function compterEmailsEnvoyes(destinataire, dateDebut, dateFin) {
try {
const query = `from:me to:${destinataire} after:${dateDebut} before:${dateFin}`;
const threads = GmailApp.search(query);
let count = 0;
threads.forEach(thread => {
count += thread.getMessages().length;
});
return count;
} catch (erreur) {
return `Erreur lors du comptage des emails : ${erreur.message}`;
}
}
Explication du script :
Ajoute un menu Outils Gmail dans Google Sheets (onOpen).
Ouvre une interface HTML pour saisir les paramètres (showEmailCountUI).
Effectue une requête Gmail pour compter les emails envoyés (compterEmailsEnvoyes).
Étape 2 : Ajouter l’interface utilisateur (HTML)
Dans l’éditeur Apps Script, créez un nouveau fichier HTML nommé Index.html et collez le code suivant :