Script Google Apps Script pour parser automatiquement les emails d'Alexis (leadqwest@gmail.com) et les ajouter ici.
SHEET_ID dans le script// === 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');
}