🔥 PAC Leads

Dashboard leads pompes à chaleur — Alexis → Client

🧾 Facturation hebdomadaire

0
Leads période
0 €
Total HT
0 €
Reversement
0 €
Marge nette
📄 Ouvrir Facturation

📧 Automatisation Gmail

Script Google Apps Script pour parser automatiquement les emails d'Alexis (leadqwest@gmail.com) et les ajouter ici.

  1. Ouvre script.google.com avec ton compte aaronbes2@gmail.com
  2. Crée un nouveau projet → colle le code ci-dessous
  3. Crée un Google Sheet → copie l'ID (dans l'URL)
  4. Remplace SHEET_ID dans le script
  5. Déployer comme Application Web (accès: "Moi uniquement")
  6. Ajouter un trigger : parsePACLeads → toutes les 5 minutes
  7. Les leads parsés apparaissent dans ton Google Sheet — copie-colle dans "Coller leads"
// === PAC Leads — Gmail Auto-Parser ===
// Scanne les emails de leadqwest@gmail.com
// Parse les leads et les écrit dans un Google Sheet

const SHEET_ID = 'TON_SHEET_ID_ICI'; // remplace par l'ID de ton Sheet
const SENDER = 'leadqwest@gmail.com';
const LABEL_PROCESSED = 'PAC-Traité';

function parsePACLeads() {
  const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName('Leads')
    || SpreadsheetApp.openById(SHEET_ID).insertSheet('Leads');

  // header si vide
  if (sheet.getLastRow() === 0) {
    sheet.appendRow(['Date Import', 'Nom', 'Email', 'Téléphone', 'Adresse',
      'Logement', 'Chauffage', 'Prestation', 'Statut', 'Email ID']);
    sheet.getRange(1,1,1,10).setFontWeight('bold');
  }

  // IDs déjà traités
  const existingIds = new Set();
  if (sheet.getLastRow() > 1) {
    const ids = sheet.getRange(2, 10, sheet.getLastRow()-1, 1).getValues();
    ids.forEach(r => { if (r[0]) existingIds.add(r[0]); });
  }

  // cherche les emails de leadqwest
  const threads = GmailApp.search('from:' + SENDER + ' -label:' + LABEL_PROCESSED, 0, 20);
  let newLeads = 0;

  // crée le label si nécessaire
  let label = GmailApp.getUserLabelByName(LABEL_PROCESSED);
  if (!label) label = GmailApp.createLabel(LABEL_PROCESSED);

  for (const thread of threads) {
    const messages = thread.getMessages();
    for (const msg of messages) {
      const msgId = msg.getId();
      if (existingIds.has(msgId)) continue;

      const body = msg.getPlainBody() || msg.getBody().replace(/<[^>]*>/g, '');
      const leads = parseLeadText(body);

      for (const lead of leads) {
        sheet.appendRow([
          new Date(),
          lead.nom || '',
          lead.email || '',
          lead.tel || '',
          lead.adresse || '',
          lead.logement || 'Propriétaire',
          lead.chauffage || '',
          lead.prestation || '',
          'Nouveau',
          msgId
        ]);
        newLeads++;
      }
    }
    // marque comme traité
    thread.addLabel(label);
  }

  if (newLeads > 0) {
    // notification email
    MailApp.sendEmail(
      Session.getActiveUser().getEmail(),
      '🔥 ' + newLeads + ' nouveaux leads PAC',
      newLeads + ' leads importés depuis ' + SENDER + '\\n' +
      'Voir le Sheet : https://docs.google.com/spreadsheets/d/' + SHEET_ID
    );
  }

  return newLeads;
}

function parseLeadText(text) {
  const leads = [];
  const blocks = text.split(/Lead\\s*\\d+/i).filter(b => b.trim());

  for (const block of blocks) {
    const lead = {};
    const lines = block.split('\\n');

    for (const line of lines) {
      const clean = line.replace(/^[•\\-\\*]\\s*/, '').trim();
      const match = clean.match(/^(.+?)\\s*:\\s*(.+)$/);
      if (!match) continue;

      const key = match[1].toLowerCase().trim();
      const val = match[2].replace(/^mailto:/, '').trim();

      if (key.includes('nom')) lead.nom = val;
      else if (key.includes('email') || key.includes('mail')) lead.email = val;
      else if (key.includes('tel') || key.includes('téléphone')) lead.tel = val;
      else if (key.includes('adresse')) lead.adresse = val;
      else if (key.includes('logement')) lead.logement = val;
      else if (key.includes('chauffage')) lead.chauffage = val;
      else if (key.includes('prestation')) lead.prestation = val;
    }

    if (lead.nom || lead.tel || lead.email) {
      leads.push(lead);
    }
  }
  return leads;
}

// Lance manuellement pour tester
function testParse() {
  const count = parsePACLeads();
  Logger.log(count + ' leads importés');
}
⚙️ Configuration client destinataire