Як я можу експортувати список, що містить електронні адреси для всіх, хто надіслав мені електронну пошту? У мене всі повідомлення архівовано.
Як я можу експортувати список, що містить електронні адреси для всіх, хто надіслав мені електронну пошту? У мене всі повідомлення архівовано.
Відповіді:
Я дуже здивований усіма складними відповідями, що передбачають додаткові інструменти! Кожен електронний лист, який ви отримуєте, має адресу, додану до "Усі контакти" (на відміну від "Мої контакти") у частині "Контакти" Gmail. Експортуйте це, і ви закінчили (або я щось пропустив у вашому запитанні).
Тут починається потужність сценарію Google Apps. Якщо вставити наступний скрипт у нову електронну таблицю Google (Інструменти, редактор сценаріїв, натисніть значок помилки, щоб підтвердити автентифікацію сценарію), то нові аркуші будуть автоматично створені на основі кількості присутніх етикеток. Після цього будуть додані адреси електронної пошти.
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);
}
Використовуйте SPLIT
функцію для вилучення імен, щоб знайти дублікати. Системні папки ігноруються, як-от INBOX
або All Items
.
Примітка: виконання сценарію може зайняти деякий час, що, звичайно, залежить від кількості електронних листів
Оновлення 2017 року
Starbanana змінив своє ім'я на глибокий екстрактор електронної пошти, і це також виглядає як оновлений інтерфейс програми та змусив його працювати на декількох облікових записах (виявив, що тільки що увійшов у свій додаток), змінивши посилання нижче, щоб відобразити це.
Оригінальний відповідь
Якщо вам потрібна швидка програма для настільних ПК (а не сценарій), то врахуйте це.
Я дуже багато шукав додаток, який працює на рівні етикетки, і знайшов експортера електронної пошти Gmail від екстрактора глибокої пошти .
Це платний додаток (я не маю нічого спільного з ними), але це дешево, і ви можете експортувати електронні адреси з певних міток або з усіх ваших облікових записів Gmail.
Тож у вашому випадку весь електронний лист, отриманий на етикетці, використовуйте фільтр та використовуйте вище, щоб експортувати у файл CSV.
Виходячи з відповіді @ jacob-jan-tuinstra Зробив незначні зміни, що відповідають моїм потребам, можливо, інші вважають це корисним.
Використовує пошук, не розбивається на етикетки, а також робить розміщення для великих вхідних повідомлень.
Частину, де написано "ВАШЕ ПОШУК ПОШУКУ НА GMAIL ТУТ", можна заповнити будь-яким запитом, який ви б використали у своєму папці "Вхідні".
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);
}
Наступний додаток є безкоштовним і працює прекрасно!
http://www.labnol.org/internet/extract-gmail-addresses/28037/
Спробуйте наступний крок за кроком, і завдяки https://webapps.stackexchange.com/a/47930/6329
крок 1. drive.google.com
крок 2. нова електронна таблиця
крок 3. інструменти> редактор сценаріїв
крок 4. Закрийте спливаюче введення кнопкою закриття
крок 5. вставте код
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);
}
крок 6. розташуйте курсор у слові "getEmails" у першому рядку
крок 7. натисніть кнопку відтворення трикутника вище в рядку меню
крок 8. Просить вас пройти автентифікацію, зробіть це
крок 9. ще раз натисніть кнопку відтворення, якщо вона ще не запущена
крок 10. перевірте свою оригінальну електронну таблицю, і в ній з’являться електронні листи.
;
або ,
.Єдиний спосіб це зробити
Примітка: якщо ви використовуєте impsize (безкоштовно) для кроку 1, тоді збережіть резервні копії як "% ВІД - Відправник електронної пошти", і ви побачите їх у своєму каталозі.
Я придумав спосіб зробити це для користувачів Mac, використовуючи Mac Mail та адресну книгу, не потребуючи завантаження додаткового програмного забезпечення. Це працює з Mac Mail 4.6 та адресною книгою 5.0.3. Не впевнений, чи працює він для інших версій чи ні. Це може працювати аналогічно для інших програм IMAP Email, таких як Thunderbird, але я не можу поручитися за це.
Ось такі кроки:
Сподіваюся, це допомагає! Це трохи громіздко, але працює для мене і досить легко після того, як ви це зробите пару разів.
MineMyMail отримує всі ваші повідомлення через IMAP, а потім витягує з нього адреси електронної пошти.
Ви можете вибрати, які папки шукає, вибравши папку / ярлик "Надіслана пошта".
Експортер адрес IMAP - це програма Mac, яка підключається до будь-якого облікового запису електронної пошти IMAP та витягує кожну адресу відправника, також із папок / міток, які ви встановили раніше. Чесно кажучи, я повинен підкреслити, що це розроблено моєю компанією.