¿Cómo puedo exportar una lista que contiene direcciones de correo electrónico para todos los que me han enviado un correo electrónico? Tengo todos los mensajes archivados.
¿Cómo puedo exportar una lista que contiene direcciones de correo electrónico para todos los que me han enviado un correo electrónico? Tengo todos los mensajes archivados.
Respuestas:
¡Estoy bastante sorprendido por todas las respuestas complicadas que implican algunas herramientas adicionales! Cada correo electrónico que recibe tiene su dirección agregada a "Todos los contactos" (en lugar de "Mis contactos") en la parte Contactos de Gmail. Exporte ese y ya está (o me perdí algo en su pregunta).
Aquí es donde entra en juego el poder de Google Apps Script. Si pega el siguiente script en una nueva hoja de cálculo de Google (Herramientas, editor de Script, presione el icono de error para autenticar el script), se crearán automáticamente nuevas hojas en función del número de etiquetas presentes. Después de eso, se agregarán las direcciones de correo electrónico.
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 la SPLIT
función para extraer nombres para encontrar duplicados. Las carpetas del sistema se ignoran, como INBOX
o All Items
.
Nota: el script puede tardar un tiempo en ejecutarse, lo que, por supuesto, depende de la cantidad de correos electrónicos
Actualización 2017
Starbanana ha cambiado su nombre a deep-email-extractor y también parece que renovó la interfaz de usuario de la aplicación y la hizo funcionar en varias cuentas (descubrí que acababa de iniciar sesión en mi aplicación), cambió el enlace a continuación para reflejar esto.
Respuesta original
Si necesita una aplicación de escritorio rápida (no un script), considere esto.
Busqué bastante una aplicación que funciona a nivel de etiqueta y encontré Gmail Email Exporter de deep-email-extractor .
Es una aplicación paga (no tengo nada que ver con ellas) pero es barata y puedes exportar direcciones de correo electrónico de etiquetas específicas o de toda tu cuenta de Gmail.
Entonces, en su caso, coloque todo su correo electrónico recibido en una etiqueta usando un filtro y use lo anterior para exportar a un archivo CSV.
Basado en la respuesta de @ jacob-jan-tuinstra. Hice algunas modificaciones menores para satisfacer mis necesidades, tal vez a otros les resulte útil.
Utiliza la búsqueda, no se divide por etiquetas y también hace fragmentos para las bandejas de entrada grandes.
La parte que dice "SU CONSULTA DE BÚSQUEDA DE GMAIL VA AQUÍ" se puede completar con cualquier consulta que utilice en su bandeja 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);
}
¡La siguiente aplicación es gratuita y funciona de maravilla!
http://www.labnol.org/internet/extract-gmail-addresses/28037/
Pruebe lo siguiente paso a paso y gracias a https://webapps.stackexchange.com/a/47930/6329
paso 1. drive.google.com
paso 2. nueva hoja de cálculo
paso 3. herramientas> editor de script
paso 4. cierra la ventana emergente de introducción con el botón de cerrar
paso 5. pega el 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);
}
paso 6. posiciona el cursor dentro de la palabra "getEmails" en la primera línea
paso 7. haz clic en el botón de reproducir triángulo arriba en la barra de menú
paso 8. Te pide que te autentiques, haz eso
paso 9. haz clic en el botón reproducir nuevamente si aún no se ejecutó
paso 10. revisa tu hoja de cálculo original y tendrá los correos electrónicos.
;
o ,
.La única forma de hacer esto es
Nota: si usa imapsize (gratis) para el paso 1, guarde las copias de seguridad como "% FROM - El remitente del correo electrónico" y las tendrá a la vista en su directorio.
Descubrí una forma de hacer esto para los usuarios de Mac que usan Mac Mail y la libreta de direcciones sin necesidad de descargar software adicional. Esto funciona con Mac Mail 4.6 y la libreta de direcciones 5.0.3. No estoy seguro si funciona para otros vers o no. Esto puede funcionar de manera similar para otros programas de correo electrónico IMAP como Thunderbird, pero no puedo responder por eso.
Aquí están los pasos:
¡Espero que esto ayude! Es un poco engorroso, pero funciona para mí y es bastante fácil después de hacerlo un par de veces.
MineMyMail recupera todos sus mensajes a través de IMAP y luego extrae las direcciones de correo electrónico.
Puede elegir qué carpetas busca seleccionando la carpeta / etiqueta "Correo enviado".
Exportador de direcciones IMAP es una aplicación para Mac que se conecta a cualquier cuenta de correo electrónico IMAP y extrae todas las direcciones de remitentes, también de las carpetas / etiquetas que configuró anteriormente. Para ser justos, debo destacar que está desarrollado por mi empresa.