Bagaimana saya bisa mengekspor daftar yang berisi alamat email untuk semua orang yang mengirimi saya email? Saya memiliki semua pesan yang diarsipkan.
Bagaimana saya bisa mengekspor daftar yang berisi alamat email untuk semua orang yang mengirimi saya email? Saya memiliki semua pesan yang diarsipkan.
Jawaban:
Saya cukup terkejut dengan semua jawaban rumit yang menyiratkan beberapa alat tambahan! Setiap email yang Anda terima memiliki alamatnya yang ditambahkan ke "Semua kontak" (sebagai lawan dari "Kontak Saya") di bagian Kontak di Gmail. Ekspor yang itu dan Anda sudah selesai (atau saya melewatkan sesuatu di pertanyaan Anda).
Di sinilah kekuatan Skrip Google Apps masuk. Jika Anda menempelkan skrip berikut ke dalam Google Spreadsheet baru (Tools, Editor skrip, tekan ikon bug untuk mengautentikasi skrip), maka lembaran baru akan secara otomatis dibuat berdasarkan nomor label yang ada. Setelah itu, alamat email akan ditambahkan.
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);
}
Gunakan SPLIT
fungsi untuk mengekstrak nama untuk menemukan duplikat. Folder sistem diabaikan, seperti INBOX
atau All Items
.
Catatan: skrip mungkin memerlukan beberapa waktu untuk dieksekusi, yang tentu saja tergantung pada jumlah surel
Perbarui 2017
Starbanana telah mengubah nama mereka menjadi deep-email-extractor dan itu juga tampak seperti mengubah UI Aplikasi dan membuatnya berfungsi pada banyak akun (ditemukan baru saja masuk ke aplikasi saya), mengubah tautan di bawah untuk mencerminkan hal ini.
Jawaban Asli
Jika Anda memerlukan aplikasi desktop cepat (bukan skrip), pertimbangkan ini.
Saya melakukan sedikit mencari aplikasi yang bekerja di tingkat label dan menemukan Eksportir Email Gmail dari deep-email-extractor .
Ini adalah aplikasi berbayar (saya tidak ada hubungannya dengan mereka) tapi itu murah dan Anda bisa mengekspor alamat email dari label tertentu atau semua akun Gmail Anda.
Jadi, dalam kasus Anda, letakkan semua email Anda yang diterima ke dalam label menggunakan filter dan gunakan yang di atas untuk mengekspor ke file CSV.
Didasarkan pada jawaban @ jacob-jan-tuinstra. Membuat beberapa modifikasi kecil yang sesuai dengan kebutuhan saya mungkin orang lain akan merasa berguna.
Menggunakan pencarian, tidak terpecah oleh label dan juga melakukan chunking untuk inbox besar.
Bagian yang mengatakan 'PENCARIAN GMAIL ANDA QUERY GOES HERE' dapat diisi dengan pertanyaan apa pun yang akan Anda gunakan di kotak masuk Anda.
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);
}
Aplikasi berikut ini gratis dan bekerja dengan indah!
http://www.labnol.org/internet/extract-gmail-addresses/28037/
Coba langkah demi langkah berikut, dan terima kasih kepada https://webapps.stackexchange.com/a/47930/6329
langkah 1. drive.google.com
langkah 2. spreadsheet baru
langkah 3. alat> editor skrip
langkah 4. tutup pengantar yang muncul dengan tombol tutup
langkah 5. rekatkan dalam kode
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);
}
langkah 6. posisikan kursor Anda di dalam kata "getEmails" di baris pertama
langkah 7. klik tombol play triangle di atas di menu bar
langkah 8. Ia meminta Anda untuk mengotentikasi, lakukan itu
langkah 9. klik tombol play lagi jika belum dijalankan
langkah 10. periksa spreadsheet asli Anda dan akan ada email.
;
atau ,
.Satu-satunya cara untuk melakukan ini adalah
Catatan: jika Anda menggunakan imapsize (gratis) untuk langkah 1, maka simpan cadangan sebagai "% FROM - The pengirim of the email" dan Anda melihatnya di direktori Anda.
Saya menemukan cara untuk melakukan ini untuk pengguna Mac menggunakan Mac Mail dan buku alamat tanpa perlu mengunduh perangkat lunak tambahan. Ini bekerja dengan Mac Mail 4.6 dan Address Book 5.0.3. Tidak yakin apakah itu berfungsi untuk vers lain atau tidak. Ini mungkin bekerja sama untuk program Email IMAP lainnya seperti Thunderbird, tapi saya tidak bisa menjamin itu.
Berikut langkah-langkahnya:
Semoga ini membantu! Agak rumit, tetapi bekerja untuk saya dan cukup mudah setelah Anda melakukannya beberapa kali.
MineMyMail mengambil semua pesan Anda melalui IMAP dan kemudian mengekstrak alamat email darinya.
Anda dapat memilih folder mana yang dicari dengan memilih folder / label "Email Terkirim".
Eksportir Alamat IMAP adalah Aplikasi Mac yang menghubungkan ke setiap akun email IMAP dan mengekstrak setiap alamat pengirim, juga dari folder / label yang Anda atur sebelumnya. Dalam semua keadilan, saya harus menyoroti bahwa itu dikembangkan oleh perusahaan saya.