Come posso esportare un elenco contenente indirizzi e-mail per tutti coloro che mi hanno inviato un'e-mail? Ho archiviato tutti i messaggi.
Come posso esportare un elenco contenente indirizzi e-mail per tutti coloro che mi hanno inviato un'e-mail? Ho archiviato tutti i messaggi.
Risposte:
Sono abbastanza sorpreso da tutte le risposte complicate che implicano alcuni strumenti extra! Ogni email che ricevi ha il suo indirizzo aggiunto a "Tutti i contatti" (anziché "I miei contatti") nella parte Contatti di Gmail. Esporta quello e il gioco è fatto (o ho perso qualcosa nella tua domanda).
È qui che entra in gioco la potenza di Google Apps Script. Se si incolla il seguente script in un nuovo foglio di calcolo di Google (Strumenti, Editor di script, premere l'icona del bug per autenticare lo script), i nuovi fogli verranno automaticamente creati in base al numero delle etichette presenti. Successivamente, verranno aggiunti gli indirizzi e-mail.
function getEmails() {
// set spreadsheet and retrieve labels
var ss = SpreadsheetApp.getActiveSpreadsheet();
var labels = GmailApp.getUserLabels(), emptyLabels = [];
// itterate through the labels
for (var i=0; i<labels.length; i++) {
try {
// create sheets and clear content
var sh = ss.getSheetByName(labels[i].getName()) ||
ss.insertSheet(labels[i].getName(), ss.getSheets().length);
sh.clear();
// get all messages
var eMails = GmailApp.getMessagesForThreads(
GmailApp.search("label:" + labels[i].getName()))
.reduce(function(a, b) {return a.concat(b);})
.map(function(eMails) {
return eMails.getFrom()
});
// sort and filter for unique entries
var aEmails = eMails.sort().filter(function(el,j,a)
{if(j==a.indexOf(el))return 1;return 0});
// create 2D-array
var aUnique = new Array();
for(var k in aEmails) {
aUnique.push([aEmails[k]]);
}
// add data to corresponding sheet
sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
} catch (e) {
emptyLabels.push(labels[i].getName());
}
}
ss.toast("These sheets are empty: " + emptyLabels);
}
Utilizzare la SPLIT
funzione per estrarre i nomi per trovare duplicati. Le cartelle di sistema vengono ignorate, come INBOX
o All Items
.
Nota: l'esecuzione dello script potrebbe richiedere del tempo, il che dipende ovviamente dal numero di e-mail
Aggiornamento 2017
Starbanana ha cambiato il proprio nome in deep-email-extractor e sembra anche aver rinnovato l'interfaccia utente dell'app e fatto funzionare su più account (scoperto avendo appena effettuato l'accesso alla mia app), modificato il collegamento in basso per riflettere questo.
Risposta originale
Se hai bisogno di un'app desktop veloce (non uno script), considera questo.
Ho fatto un po 'di ricerca di un'app che funzioni a livello di etichetta e ho trovato Gmail Email Exporter da deep-email-extractor .
È un'app a pagamento (non ho nulla a che fare con loro) ma è economica e puoi esportare indirizzi e-mail da etichette specifiche o da tutto il tuo account Gmail.
Quindi nel tuo caso metti tutta la tua e-mail ricevuta in un'etichetta usando un filtro e usa quanto sopra per esportare in un file CSV.
Basato sulla risposta di @ jacob-jan-tuinstra. Ho apportato alcune modifiche minori per soddisfare le mie esigenze, forse altri lo potrebbero trovare utile.
Utilizza la ricerca, non viene suddiviso in base alle etichette e viene utilizzato anche per le grandi caselle di posta in arrivo.
La parte che dice "LA TUA RICHIESTA DI RICERCA DI GMAIL VA QUI" può essere riempita con qualsiasi query che useresti nella tua casella di posta.
function getEmails() {
// set spreadsheet and retrieve labels
var query = 'YOUR GMAIL SEARCH QUERY GOES HERE',
ss = SpreadsheetApp.getActiveSpreadsheet(),
sh = ss.getSheetByName(query) || ss.insertSheet(query, ss.getSheets().length),
uniqueEmails = {},
errors = [],
// max chunk size
chunkSize = 500,
currentChunk = 0,
threads,
messages,
i,
j,
k,
msg,
tos;
sh.clear();
while (currentChunk === 0 || threads.length === chunkSize) {
try {
// grab threads that match the query one chunk at a time
threads = GmailApp.search(query, chunkSize * currentChunk, chunkSize);
// grab corresponding messages from the threads
messages = GmailApp.getMessagesForThreads(threads);
for (i = 0; i < messages.length; i++) {
msg = messages[i];
for (j = 0; j < msg.length; j++) {
// get the from
uniqueEmails[msg[j].getFrom()] = true;
// get the reply to
uniqueEmails[msg[j].getReplyTo()] = true;
// grab from the to field as well
// this has a bug for people with commas in their names
// tos = msg[j].getTo().split(',');
// for (k = 0; k < tos.length; k++) {
// uniqueEmails[tos[k]] = true;
// }
}
}
currentChunk += 1;
} catch (e) {
errors.push(e);
}
}
// create 2D-array
var aUnique = [];
for (k in uniqueEmails) {
aUnique.push([k]);
}
// add data to corresponding sheet
sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
}
La seguente app è gratuita e funziona magnificamente!
http://www.labnol.org/internet/extract-gmail-addresses/28037/
Prova il seguente passo per passo e grazie a https://webapps.stackexchange.com/a/47930/6329
passaggio 1. drive.google.com
passaggio 2. nuovo foglio di calcolo
passaggio 3. strumenti> editor di script
passaggio 4. chiudere l'introduzione pop-up con il pulsante di chiusura
passaggio 5. incolla il codice
function getEmails() {
// http://stackoverflow.com/a/12029701/1536038
// get all messages
var eMails = GmailApp.getMessagesForThreads(
GmailApp.search('after:2012/1/14 before:2013/8/15'))
.reduce(function(a, b) {return a.concat(b);})
.map(function(eMails) {
return eMails.getFrom()
});
// sort and filter for unique entries
var aEmails = eMails.sort().filter(function(el,j,a)
{if(j==a.indexOf(el))return 1;return 0});
// create 2D-array
var aUnique = new Array();
for(var k in aEmails) {
aUnique.push([aEmails[k]]);
}
// add data to sheet
SpreadsheetApp.getActiveSheet().getRange(1, 1, aUnique.length, 1)
.setValues(aUnique);
}
passaggio 6. posizionare il cursore su all'interno della parola "getEmails" nella prima riga
passaggio 7. fare clic sul pulsante Riproduci triangolo sopra nella barra dei menu
passaggio 8. Ti chiede di autenticarti, fallo
passaggio 9. fare nuovamente clic sul pulsante di riproduzione se non è già stato eseguito
passo 10. controlla il tuo foglio di calcolo originale e avrà le e-mail.
;
o ,
.L'unico modo per farlo è
Nota: se usi imapsize (gratuito) per il passaggio 1, salva i backup come "% FROM - Il mittente dell'e-mail" e li hai in bella vista nella tua directory.
Ho trovato un modo per farlo per gli utenti Mac usando Mac Mail e la rubrica senza dover scaricare software aggiuntivo. Funziona con Mac Mail 4.6 e Rubrica 5.0.3. Non sono sicuro se funziona per altri vers o meno. Questo potrebbe funzionare in modo simile per altri programmi di posta elettronica IMAP come Thunderbird, ma non posso garantirlo.
Ecco i passaggi:
Spero che sia di aiuto! È un po 'ingombrante, ma funziona per me ed è abbastanza facile dopo averlo fatto un paio di volte.
MineMyMail recupera tutti i tuoi messaggi tramite IMAP e quindi estrae gli indirizzi email da esso.
Puoi scegliere quali cartelle cercare selezionando la cartella / etichetta "Posta inviata".
IMAP Addresses Exporter è un'app per Mac che si collega a qualsiasi account di posta elettronica IMAP ed estrae ogni indirizzo del mittente, anche dalle cartelle / etichette impostate in precedenza. In tutta onestà, devo sottolineare che è stato sviluppato dalla mia azienda.