Como posso exportar uma lista contendo endereços de email para todos que me enviaram um email? Eu tenho todas as mensagens arquivadas.
Como posso exportar uma lista contendo endereços de email para todos que me enviaram um email? Eu tenho todas as mensagens arquivadas.
Respostas:
Estou bastante surpreso com todas as respostas complicadas que implicam em algumas ferramentas extras! Todos os emails que você recebe têm seu endereço adicionado a "Todos os contatos" (em oposição a "Meus contatos") na parte Contatos do Gmail. Exporte esse e pronto (ou eu perdi algo na sua pergunta).
É aqui que entra o poder do script do Google Apps. Se você colar o seguinte script em uma nova planilha do Google (Ferramentas, editor de scripts, pressione o ícone do bug para autenticar o script), novas folhas serão criadas automaticamente com base no número de etiquetas presentes. Depois disso, os endereços de email serão adicionados.
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);
}
Use a SPLIT
função para extrair nomes para encontrar duplicatas. As pastas do sistema são ignoradas, como INBOX
ou All Items
.
Nota: o script pode levar algum tempo para ser executado, o que depende, é claro, do número de e-mails
Atualização 2017
O Starbanana mudou seu nome para deep-email-extractor e também parece que renovou a interface do aplicativo e o fez funcionar em várias contas (descobertas depois de fazer login no meu aplicativo), alterou o link abaixo para refletir isso.
Resposta original
Se você precisar de um aplicativo de desktop rápido (não um script), considere isso.
Pesquisei bastante um aplicativo que funcionava no nível da etiqueta e encontrei o Gmail Email Exporter no deep-email-extractor .
É um aplicativo pago (não tenho nada a ver com eles), mas é barato e você pode exportar endereços de e-mail de marcadores específicos ou de toda a sua conta do Gmail.
Portanto, no seu caso, coloque todos os seus emails recebidos em um rótulo usando um filtro e use o acima para exportar para um arquivo CSV.
Com base na resposta de @ jacob-jan-tuinstra. Fiz algumas pequenas modificações para atender às minhas necessidades, talvez outros achem útil.
Usa a pesquisa, não é dividida por marcadores e também agrupa para caixas de entrada grandes.
A parte que diz 'SUA CONSULTA DE PESQUISA GMAIL VAI AQUI' pode ser preenchida com qualquer consulta que você usaria em sua caixa de entrada.
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);
}
O aplicativo a seguir é gratuito e funciona lindamente!
http://www.labnol.org/internet/extract-gmail-addresses/28037/
Tente o seguinte passo a passo e obrigado a https://webapps.stackexchange.com/a/47930/6329
etapa 1. drive.google.com
etapa 2. nova planilha
etapa 3. ferramentas> editor de scripts
passo 4. feche a introdução pop-up com o botão fechar
passo 5. cole o código
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);
}
passo 6. posicione o cursor na palavra "getEmails" na primeira linha
passo 7. clique no botão reproduzir triângulo acima na barra de menus
passo 8. Solicita que você se autentique, faça isso
etapa 9. clique no botão play novamente se ainda não foi executado
etapa 10. verifique sua planilha original e ela receberá os emails.
;
ou ,
.A única maneira de fazer isso é
Nota: se você usar o imapsize (gratuito) na etapa 1, salve os backups como "% FROM - O remetente do email" e você os terá à vista no diretório.
Eu descobri uma maneira de fazer isso para usuários de Mac usando o Mac Mail e o catálogo de endereços sem precisar baixar software extra. Isso funciona com o Mac Mail 4.6 e o Address Book 5.0.3. Não tenho certeza se funciona para outro vers ou não. Isso pode funcionar de maneira semelhante para outros programas de email IMAP como o Thunderbird, mas não posso garantir isso.
Aqui estão os passos:
Espero que isto ajude! É um pouco complicado, mas funciona para mim e é bastante fácil depois que você faz isso algumas vezes.
O MineMyMail busca todas as suas mensagens via IMAP e extrai os endereços de email.
Você pode escolher quais pastas ele procura selecionando a pasta / etiqueta "Correio enviado".
O Exportador de endereços IMAP é um aplicativo para Mac que se conecta a qualquer conta de e-mail IMAP e extrai todos os endereços de remetentes, também das pastas / etiquetas que você definiu anteriormente. Com toda a justiça, devo destacar que é desenvolvido pela minha empresa.