Email Extracteur pour Gmail

8 décembre 2025

 

Voici un Extracteur de données pour Gmail.

Cela vous permet de créer des tableaux pour récupérer vos données, comme par exemple, tous les noms, prénoms, adresses Email, numéros de téléphone..etc

Ce petit Script va fouiller dans votre boite Gmail pour créer un tableau et catégoriser vos données.

Son petit nom : Casa-Extracteur-v1.0

Une fois dans google sheets, vous pourrez l’exporter facilement en .ODS ou .XLS

 

Email Extracteur

1. Préparer le tableau

  1. Ouvre Google Sheets → crée une nouvelle feuille.

  2. Renomme la feuille comme tu veux (ex. Contacts Gmail).

  3. Mets rien dedans, le script va créer les colonnes.


2. Ouvrir l’éditeur de script

  1. Ouvre Google Scripts et dans la feuille : menu Extensions → Apps Script.

  2. Supprime tout le code présent.

  3. Colle ce script à la place :

 


function extractContacts() {
  const defaultQuery = ‘in:inbox newer_than:365d’;
  extractContactsByQuery_(defaultQuery);
}
function extractContactsFromPrompt() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.prompt(
    ‘Extraction de contacts’,
    ‘Saisis une recherche Gmail (comme dans Gmail). Exemples :\n’ +
    ‘  label:A_EXTRAIRE\n’ +
    ‘  from:contact@monsite.fr\n’ +
    ‘  subject: »formulaire »\n’,
    ui.ButtonSet.OK_CANCEL
  );
  if (response.getSelectedButton() !== ui.Button.OK) return;
  const query = response.getResponseText().trim();
  if (!query) {
    ui.alert(‘Aucune requête saisie.’);
    return;
  }
  extractContactsByQuery_(query);
}
// —— Extraction générique ——
function extractContactsByQuery_(query) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  if (!ss) throw new Error(« Script non lié à une feuille Google Sheets. »);
  const sheetName = ‘Contacts Gmail’;
  let sheet = ss.getSheetByName(sheetName);
  if (!sheet) sheet = ss.insertSheet(sheetName);
  // En-têtes
  sheet.clearContents();
  sheet.appendRow([
    ‘Nom’,
    ‘Prénom’,
    ‘Email’,
    ‘Téléphone’,
    ‘Adresse’,
    ‘Code Postal’,
    ‘Ville’,
    ‘Sujet du mail’,
    ‘Date’,
    ‘Requête Gmail’
  ]);
  const maxThreads = 500;
  const threads = GmailApp.search(query, 0, maxThreads);
  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      const from = message.getFrom();
      const body = message.getPlainBody();
      // ——– EMAIL ——–
      let email =  »;
      const emailMatch = from.match(/<([^>]+)>/);
      if (emailMatch) {
        email = emailMatch[1].trim();
      } else {
        const simpleEmailMatch = from.match(/([\w.+-]+@[\w.-]+\.\w+)/);
        email = simpleEmailMatch ? simpleEmailMatch[1] : from;
      }
      // ——– NOM / PRÉNOM ——–
      let namePart = from;
      if (emailMatch) {
        namePart = from.substring(0, from.indexOf(‘<‘)).replace(/ »/g,  »).trim();
      }
      let prenom =  »;
      let nom =  »;
      if (namePart) {
        const parts = namePart.split(/\s+/);
        prenom = parts[0] ||  »;
        nom = parts.slice(1).join(‘ ‘);
      }
      // ——– TÉLÉPHONE ——–
      let telephone =  »;
      const phoneMatch = body.match(/((?:\+33|0)[1-9](?:[ .-]?\d{2}){4})/);
      if (phoneMatch) telephone = phoneMatch[1];
      // ——– ADRESSE ——–
      let adresse =  »;
      const addressMatch = body.match(
        /(\d{1,3}\s+[^\n,]*(?:rue|avenue|bd|boulevard|chemin|impasse|allée|allee|place)[^\n,]*)/i
      );
      if (addressMatch) adresse = addressMatch[1].trim();
      // ——– CODE POSTAL ——–
      let codePostal =  »;
      const cpMatch = body.match(/\b(\d{5})\b/);
      if (cpMatch) codePostal = cpMatch[1];
      // ——– VILLE ——–
      let ville =  »;
      if (cpMatch) {
        const afterCP = body.substring(cpMatch.index + 5).trim();
        const villeMatch = afterCP.match(/^([A-Za-zÀ-ÖØ-öø-ÿ’ -]+)/);
        if (villeMatch) {
          ville = villeMatch[1].trim();
          ville = ville.split(‘\n’)[0].trim(); // éviter de prendre plusieurs lignes
        }
      }
      sheet.appendRow([
        nom,
        prenom,
        email,
        telephone,
        adresse,
        codePostal,
        ville,
        message.getSubject(),
        message.getDate(),
        query
      ]);
    });
  });
}
// —– Menu —–
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu(‘Contacts Gmail’)
    .addItem(‘Extraire (inbox – 1 an)’, ‘extractContacts’)
    .addItem(‘Extraire depuis une recherche Gmail…’, ‘extractContactsFromPrompt’)
    .addToUi();
}

 

3. Donner les autorisations

  1. Clique sur Enregistrer (icône disquette) → donne un nom au projet.

  2. Dans le menu, lance la fonction Extractcontact une première fois :

    • en haut, à gauche de ▶, choisis Extractcontact → clique sur ▶.

  3. Google va te demander d’autoriser l’accès à Gmail & Sheets → accepte (tu devras cliquer sur “Paramètres avancés” → “Continuer”).


4. Utiliser le script

  1. Retourne dans ta feuille Google Sheets.

  2. Tu dois voir un menu Contacts Gmail en haut.

  3. Clique dessus → Extraire les contacts.

  4. Le tableau se remplit avec : Nom, Prénom, Email, Téléphone, Adresse, Sujet, Date.


Important

La détection du téléphone et de l’adresse est basée sur des motifs (regex), donc ce n’est pas parfait, mais ça fonctionne bien sur les formulaires classiques.

Tu peux adapter la ligne const query = '...' pour cibler seulement les mails de formulaires, d’un domaine, d’un label, etc.

Si tu veux, au message suivant, tu me dis comment arrivent tes contacts (formulaire de site, réponses à un modèle, etc.) et j’adapte le script précisément à ton cas.

Ce script permet l’extraction de maximum 500 lignes de tableur. Cette limite étant fixé par Google.

Étiquettes : , ,

Leave a Comment