Comment exporter des e-mails vers Excel / Google Sheets

Si vous avez besoin de vos e-mails dans un tableur, voici exactement comment procéder. Il existe des applications qui analysent vos e-mails et exportent vos messages ainsi que les données extraites vers une feuille de calcul Google. ActorAi peut également vous aider.

Voici une liste concise des cas d’usage courants pour exporter des e-mails vers Excel ou Google Sheets :

  • Exporter les commandes et les notifications d’expédition.
  • Exporter les prospects par e-mail pour mettre à jour un CRM ou une base de données.
  • Analyser les adresses e-mail en échec pour gérer les listes.
  • Partager les problèmes en cours ou les demandes avec les équipes à l’aide de feuilles de calcul partagées.
  • Importer des données structurées provenant d’e-mails dans des bases de données ou des applications professionnelles.
  • Sauvegarder et archiver les e-mails professionnels importants.
  • Créer des listes de diffusion à partir des contacts et des adresses.
  • Extraire les informations financières et les dépenses pour les rapports.

Exporter des e-mails de Gmail vers Google Sheets

Option A – Avec le module complémentaire Google Workspace (le plus simple)

  • Ouvrez Google Sheets → Extensions → Modules complémentaires.
  • Recherchez le module complémentaire « Gmail vers Sheets » (choisissez celui qui répond à vos besoins).
  • Installez-le et connectez votre compte Gmail.
  • Sélectionnez un libellé/dossier ou un filtre de recherche.
  • Lancez l’exportation → les données apparaissent dans votre feuille de calcul.
  • Conseil : configurez l’actualisation automatique pour une mise à jour quotidienne.

Option B – Avec Google Apps Script (méthode à faire soi-même)

  • Récupère les e-mails correspondant à une recherche Gmail (libellé, from:, subject:, after:, etc.).
  • Les écrit dans la feuille active, dans des colonnes bien organisées
  • Ajoute un menu personnalisé : Exportation des e-mails → Lancer l’export
  • Vous permet de contrôler la requête de recherche, le nombre maximal d’e-mails et l’inclusion ou non du corps des messages

Configurer Google Apps Script (méthode à faire soi-même pour exporter vers Excel)

  1. Ouvrez une nouvelle feuille Google.
  2. Extensions → Apps Script.
  3. Supprimez tout le code et collez le script ci-dessous.
  4. Cliquez sur Enregistrez, puis Exécuter → onOpen() pour ajouter le menu personnalisé.
  5. De retour dans la feuille, accédez à Exportation des e-mails → Configurer la feuille (cela crée un onglet de configuration et les en-têtes).
  6. Saisissez votre recherche dans Config!B2 (exemples ci-dessous), puis Exportation des e-mails → Lancer l’export.
/**************************************
 * Gmail → Google Sheets Exporter
 * Simple, DYI method for tech advanced.
 **************************************/

const CONFIG_SHEET = 'Config';
const OUTPUT_SHEET = 'Emails';
const PROPERTY_STORE = PropertiesService.getDocumentProperties();

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Email Export')
    .addItem('Setup sheet', 'setupSheet')
    .addItem('Run export', 'exportEmails')
    .addToUi();
}

function setupSheet() {
  const ss = SpreadsheetApp.getActive();
  // Config sheet
  let conf = ss.getSheetByName(CONFIG_SHEET);
  if (!conf) conf = ss.insertSheet(CONFIG_SHEET);
  conf.clear();

  conf.getRange('A1').setValue('Setting');
  conf.getRange('B1').setValue('Value');

  const rows = [
    ['Search query', 'label:inbox newer_than:30d'], // B2
    ['Max emails to fetch (per run)', 500],          // B3 (limit to avoid timeouts)
    ['Include message body? (true/false)', false],   // B4
    ['Body max characters', 5000],                  // B5
    ['Continue from last run? (true/false)', false]  // B6
  ];
  conf.getRange(2, 1, rows.length, 2).setValues(rows);
  conf.autoResizeColumns(1, 2);

  // Output sheet
  let out = ss.getSheetByName(OUTPUT_SHEET);
  if (!out) out = ss.insertSheet(OUTPUT_SHEET);
  out.clear();

  const headers = [
    'Date',
    'From',
    'To',
    'Subject',
    'Snippet',
    'Thread ID',
    'Message ID',
    'Labels',
    'Has Attachments',
    'Thread Link',
    'Message Link',
    'Body (optional)'
  ];
  out.getRange(1, 1, 1, headers.length).setValues([headers]);
  out.setFrozenRows(1);
  out.autoResizeColumns(1, headers.length);

  SpreadsheetApp.getUi().alert('Setup complete. Enter your query in Config!B2, then run "Email Export → Run export".');
}

function getConfig_() {
  const ss = SpreadsheetApp.getActive();
  const conf = ss.getSheetByName(CONFIG_SHEET);
  if (!conf) throw new Error('Config sheet missing. Run "Setup sheet" first.');

  const getVal = (row) => conf.getRange(row, 2).getValue();

  return {
    query: String(getVal(2) || '').trim(),
    maxEmails: Number(getVal(3) || 500),
    includeBody: String(getVal(4)).toLowerCase() === 'true',
    bodyMaxChars: Number(getVal(5) || 5000),
    continueFromLast: String(getVal(6)).toLowerCase() === 'true',
  };
}

function exportEmails() {
  const cfg = getConfig_();
  if (!cfg.query) throw new Error('Please fill a Gmail search in Config!B2.');

  const ss = SpreadsheetApp.getActive();
  const out = ss.getSheetByName(OUTPUT_SHEET) || ss.insertSheet(OUTPUT_SHEET);

  // Resume support (optional)
  let startIndex = 0;
  if (cfg.continueFromLast) {
    startIndex = Number(PROPERTY_STORE.getProperty('startIndex') || 0);
  } else {
    PROPERTY_STORE.deleteProperty('startIndex');
    // If not continuing, start fresh by clearing previous rows (keep header)
    const lastRow = out.getLastRow();
    if (lastRow > 1) out.getRange(2, 1, lastRow - 1, out.getLastColumn()).clearContent();
  }

  const BATCH_SIZE_THREADS = 100; // Gmail returns threads, we’ll page through them
  const rows = [];
  let fetchedEmails = 0;

  while (fetchedEmails < cfg.maxEmails) {
    const threads = GmailApp.search(cfg.query, startIndex, BATCH_SIZE_THREADS);
    if (!threads.length) break;

    for (const thread of threads) {
      const msgs = thread.getMessages();
      for (const msg of msgs) {
        if (fetchedEmails >= cfg.maxEmails) break;

        const date = msg.getDate();
        const from = msg.getFrom();
        const to = msg.getTo();
        const subject = msg.getSubject() || '';
        const snippet = msg.getPlainBody().slice(0, 120).replace(/\s+/g, ' ').trim();
        const threadId = thread.getId();
        const msgId = msg.getId();
        const labels = thread.getLabels().map(l => l.getName()).join(', ');
        const hasAttachments = msg.getAttachments().length > 0;

        const threadLink = `https://mail.google.com/mail/u/0/#all/${threadId}`;
        const messageLink = `https://mail.google.com/mail/u/0/#inbox/${msgId}`;

        let body = '';
        if (cfg.includeBody) {
          // Prefer plain body; fallback to HTML stripped
          body = msg.getPlainBody();
          if (!body) {
            const html = msg.getBody();
            body = stripHtml_(html);
          }
          if (cfg.bodyMaxChars > 0 && body.length > cfg.bodyMaxChars) {
            body = body.slice(0, cfg.bodyMaxChars) + '…';
          }
        }

        rows.push([
          date,
          from,
          to,
          subject,
          snippet,
          threadId,
          msgId,
          labels,
          hasAttachments,
          threadLink,
          messageLink,
          body
        ]);

        fetchedEmails++;
      }
      if (fetchedEmails >= cfg.maxEmails) break;
    }

    startIndex += BATCH_SIZE_THREADS;
    // Safety: avoid 6-minute execution limit
    if (Utilities.getRemainingDailyQuota && rows.length >= 5000) break;
  }

  if (rows.length) {
    out.insertRowsAfter(out.getLastRow() || 1, rows.length);
    out.getRange(out.getLastRow() - rows.length + 1, 1, rows.length, rows[0].length).setValues(rows);
    out.autoResizeColumns(1, out.getLastColumn());
  }

  if (cfg.continueFromLast) {
    PROPERTY_STORE.setProperty('startIndex', String(startIndex));
  }

  SpreadsheetApp.getUi().alert(`Export complete: ${fetchedEmails} emails added.`);
}

function stripHtml_(html) {
  // Lightweight HTML → text
  return String(html || '')
    .replace(/<style[\s\S]*?<\/style>/gi, '')
    .replace(/<script[\s\S]*?<\/script>/gi, '')
    .replace(/<[^>]+>/g, ' ')
    .replace(/\s+/g, ' ')
    .trim();
}

Version simple du script pour Google Sheets.

function exportSimple() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const query = 'label:inbox newer_than:7d';
  const threads = GmailApp.search(query, 0, 100);
  const rows = [['Date','From','Subject','Snippet','Thread Link']];
  threads.forEach(t => {
    t.getMessages().forEach(m => {
      rows.push([
        m.getDate(),
        m.getFrom(),
        m.getSubject(),
        m.getPlainBody().slice(0,120).replace(/\s+/g,' ').trim(),
        'https://mail.google.com/mail/u/0/#all/' + t.getId()
      ]);
    });
  });
  sheet.clear().getRange(1,1,rows.length,rows[0].length).setValues(rows);
}

Exporter des e-mails d’Outlook vers Excel

1. Utiliser la méthode d’exportation au format CSV dans Outlook :

  • Accédez à  Fichier > Ouvrir et exporter > Importer/Exporter.
  • Choisissez  Exporter vers un fichier  et sélectionnez  Valeurs séparées par des virgules (CSV).
  • Sélectionnez le dossier de messagerie à partir duquel vous souhaitez exporter (par ex. la boîte de réception).
  • cliquez sur  Mapper les champs personnalisés  pour sélectionner uniquement les attributs de courriel dont vous avez besoin, tels que  De,  À,  Objet,  Date de réception, etc.
  • Terminez l’exportation, puis ouvrez le fichier CSV dans Excel pour consulter uniquement les métadonnées.

2. Filtrer et copier les métadonnées textuelles dans Outlook :

  • Créez un affichage personnalisé dans Outlook en ne laissant visibles que les colonnes souhaitées (comme l’expéditeur, la date, etc.).
  • Sélectionnez les e-mails, copiez-les, puis collez-les dans Excel.
  • Cette méthode peut être plus rapide pour les petits lots, surtout si vous souhaitez exporter uniquement certaines informations d’en-tête ou métadonnées.

3. Utiliser Power Query pour une exportation dynamique :

  • Power Query dans Excel peut se connecter directement à Outlook et filtrer uniquement les champs nécessaires.
  • Cette méthode permet d’actualiser les données et d’automatiser le processus en continu, tout en limitant la quantité de données.
  1. Ouvrez Excel et accédez à l’onglet Données.
  2. Sélectionnez Obtenir des données > À partir d’autres sources > À partir de Microsoft Exchange.
  3. Saisissez votre adresse e-mail Outlook et connectez-vous.
  4. Choisissez le dossier de la boîte aux lettres (par exemple, Boîte de réception) qui contient les e-mails souhaités.
  5. Dans l’éditeur Power Query, sélectionnez uniquement les colonnes nécessaires, comme Objet, De, À et Date de réception.
  6. Appliquez les filtres nécessaires pour affiner la sélection d’e-mails, par exemple par date ou par expéditeur.
  7. Cliquez sur Fermer et charger pour importer les données filtrées des e-mails dans un tableau Excel.
  8. Actualisez la requête à tout moment pour mettre à jour vos données avec les e-mails nouveaux ou modifiés.

Remarque : nous prévoyons d’intégrer cette fonctionnalité à Actor sous la forme d’une application de messagerie. Nous évaluons actuellement l’intérêt qu’elle suscite.

Remarque : l’exportation vers Excel ou Google Sheets ne fait aucune différence. Les deux sont d’excellents outils, développés par Google et Microsoft.

Vos e-mails se trouvent maintenant dans un tableur : vous pouvez les analyser, les filtrer ou les partager. Si vous devez le faire régulièrement, il vous faudra automatiser le processus pour le répéter aux intervalles souhaités.

Bonjour, je suis ACTOR, conçu pour simplifier le quotidien des professionnels très occupés comme vous.

Ma mission est d’être le meilleur partenaire numérique que vous ayez jamais eu : vous aider à respecter votre emploi du temps, à gérer vos e-mails ou à vous concentrer sur ce qui compte vraiment.

Vidéos : bien démarrer

J’apprends et je m’améliore constamment, car je veux mieux comprendre vos besoins à chaque échange.

Considérez-moi comme votre copilote de confiance, là pour réduire votre stress et vous faire gagner un temps précieux.
Ensemble, nous viendrons à bout de votre liste de tâches, nous resterons organisés et chaque journée sera plus productive.

Laissez-moi m’occuper des petites choses pour que vous puissiez vous concentrer sur l’essentiel. Envie de rendre votre journée plus simple ? C’est parti !

Essayez-moi ici

Remarque : les comparaisons et les informations présentées dans cet article ou sur cette page reposent sur des informations accessibles au public et peuvent ne pas être exhaustives. Tous les noms de produits et de marques mentionnés sont des marques commerciales ou des marques déposées appartenant à leurs propriétaires respectifs.