Jak mogę wyeksportować listę zawierającą adresy e-mail dla wszystkich, którzy przesłali mi e-mail? Mam wszystkie wiadomości zarchiwizowane.
Jak mogę wyeksportować listę zawierającą adresy e-mail dla wszystkich, którzy przesłali mi e-mail? Mam wszystkie wiadomości zarchiwizowane.
Odpowiedzi:
Jestem dość zaskoczony wszystkimi skomplikowanymi odpowiedziami sugerującymi dodatkowe narzędzia! Każdy otrzymany e-mail ma swój adres dodany do „Wszystkich kontaktów” (w przeciwieństwie do „Moich kontaktów”) w części Kontakty Gmaila. Wyeksportuj to i gotowe (lub coś przeoczyłem w twoim pytaniu).
W tym miejscu włącza się moc Google Apps Script. Jeśli wkleisz poniższy skrypt w nowym arkuszu kalkulacyjnym Google (Narzędzia, edytor skryptów, naciśnij ikonę błędu, aby uwierzytelnić skrypt), nowe arkusze zostaną automatycznie utworzone na podstawie liczby obecnych etykiet. Następnie adresy e-mail zostaną dodane.
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);
}
Użyj SPLIT
funkcji, aby wyodrębnić nazwy, aby znaleźć duplikaty. Foldery systemowe są ignorowane, takie jak INBOX
lub All Items
.
Uwaga: wykonanie skryptu może trochę potrwać, co oczywiście zależy od liczby wiadomości e-mail
Aktualizacja 2017
Starbanana zmieniła nazwę na ekstraktor do głębokich e-maili, a także wygląda na to, że przerobił interfejs aplikacji i sprawił, że działa na wielu kontach (odkryłem, że właśnie zalogowałem się do mojej aplikacji), zmieniłem link poniżej, aby to odzwierciedlić.
Oryginalna odpowiedź
Jeśli potrzebujesz szybkiej aplikacji komputerowej (nie skryptu), zastanów się nad tym.
Sporo szukałem aplikacji, która działa na poziomie etykiety, i znalazłem Gmail Email Exporter z deep-email-extractor .
To płatna aplikacja (nie mam z nimi nic wspólnego), ale jest tania i możesz eksportować adresy e-mail z określonych etykiet lub całego konta Gmail.
Więc w twoim przypadku umieść wszystkie otrzymane wiadomości e-mail w etykiecie za pomocą filtra i użyj powyższego, aby wyeksportować do pliku CSV.
Na podstawie odpowiedzi @ jacob-jan-tuinstra. Wprowadziłem kilka drobnych modyfikacji w celu dostosowania do moich potrzeb, być może inni uznaliby to za przydatne.
Korzysta z wyszukiwania, nie dzieli się według etykiet, a także tworzy porcje dla dużych skrzynek odbiorczych.
Część z napisem „TWOJE WYSZUKIWANIE GMAILOWEJ TUTAJ JEST TUTAJ” można wypełnić dowolnym zapytaniem, którego użyłbyś w swojej skrzynce odbiorczej.
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);
}
Następująca aplikacja jest darmowa i działa pięknie!
http://www.labnol.org/internet/extract-gmail-addresses/28037/
Wypróbuj następujący krok po kroku i dzięki https://webapps.stackexchange.com/a/47930/6329
krok 1. drive.google.com
krok 2. nowy arkusz kalkulacyjny
krok 3. narzędzia> edytor skryptów
krok 4. zamknij okienko wprowadzenia za pomocą przycisku zamykania
krok 5. wklej kod
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);
}
krok 6. umieść kursor na słowie „getEmails” w pierwszym wierszu
krok 7. kliknij przycisk trójkąta odtwarzania powyżej na pasku menu
krok 8. Prosi o uwierzytelnienie, zrób to
krok 9. ponownie kliknij przycisk odtwarzania, jeśli jeszcze nie został uruchomiony
krok 10. sprawdź oryginalny arkusz kalkulacyjny, a będzie on zawierał wiadomości e-mail.
;
lub ,
.Jedynym sposobem na to jest
Uwaga: jeśli używasz imapsize (darmowy) dla kroku 1, zapisz kopie zapasowe jako „% FROM - nadawca wiadomości e-mail” i masz je na widoku w swoim katalogu.
Wymyśliłem sposób na to dla użytkowników komputerów Mac korzystających z Mac Mail i książki adresowej bez konieczności pobierania dodatkowego oprogramowania. Działa to z Mac Mail 4.6 i Książką adresową 5.0.3. Nie jestem pewien, czy to działa na innych wersjach czy nie. Może to działać podobnie w przypadku innych programów pocztowych IMAP, takich jak Thunderbird, ale nie mogę za to ręczyć.
Oto kroki:
Mam nadzieję że to pomoże! Jest to trochę uciążliwe, ale działa dla mnie i jest dość łatwe po zrobieniu tego kilka razy.
MineMyMail pobiera wszystkie wiadomości przez IMAP, a następnie wyodrębnia z nich adresy e-mail.
Możesz wybrać, które foldery ma przeszukiwać, wybierając folder / etykietę „Wysłane wiadomości”.
Eksporter adresów IMAP to aplikacja na komputery Mac, która łączy się z dowolnym kontem e-mail IMAP i wyodrębnia każdy adres nadawcy, również z wcześniej ustawionych folderów / etykiet. Z całą uczciwością muszę podkreślić, że opracowuje ją moja firma.