ฉันจะส่งออกรายการที่มีที่อยู่อีเมลสำหรับทุกคนที่ส่งอีเมลถึงฉันได้อย่างไร ฉันมีข้อความทั้งหมดที่ถูกเก็บถาวร
ฉันจะส่งออกรายการที่มีที่อยู่อีเมลสำหรับทุกคนที่ส่งอีเมลถึงฉันได้อย่างไร ฉันมีข้อความทั้งหมดที่ถูกเก็บถาวร
คำตอบ:
ฉันค่อนข้างแปลกใจกับคำตอบที่ซับซ้อนที่แสดงเครื่องมือพิเศษบางอย่าง! อีเมลทั้งหมดที่คุณได้รับจะมีการเพิ่มที่อยู่ใน "ที่อยู่ติดต่อทั้งหมด" (ตรงข้ามกับ "ที่อยู่ติดต่อของฉัน") ในส่วนที่อยู่ติดต่อของ 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 ได้เปลี่ยนชื่อเป็น deep-email-extractor และมันก็ดูเหมือนจะปรับปรุงใหม่ UI ของแอปและทำให้มันทำงานได้หลายบัญชี
คำตอบเดิม
หากคุณต้องการแอปเดสก์ท็อปที่รวดเร็ว (ไม่ใช่สคริปต์) ให้ลองพิจารณาสิ่งนี้
ฉันได้ค่อนข้างบิตของการค้นหาสำหรับ app ที่ผลงานในระดับฉลากและพบว่าผู้ส่งออกอีเมล์ Gmail จากลึกอีเมลระบาย
มันเป็นแอพที่ต้องจ่ายเงิน (ฉันไม่มีส่วนเกี่ยวข้องกับพวกเขา) แต่มันราคาถูกและคุณจะได้รับการส่งออกที่อยู่อีเมลจากป้ายกำกับที่ระบุหรือบัญชี Gmail ทั้งหมดของคุณ
ดังนั้นในกรณีของคุณใส่อีเมลทั้งหมดของคุณที่ได้รับลงในป้ายกำกับโดยใช้ตัวกรองและใช้ด้านบนเพื่อส่งออกไปยังไฟล์ CSV
ตามคำตอบของ @ jacob-jan-tuinstra ทำการปรับเปลี่ยนเล็กน้อยเพื่อให้เหมาะกับความต้องการของฉันบางทีคนอื่นอาจเห็นว่ามันมีประโยชน์
ใช้การค้นหาไม่แยกตามป้ายกำกับและรวมไปถึงกล่องจดหมายขนาดใหญ่
ส่วนที่ระบุว่า'การค้นหาแบบสอบถามทางอีเมลของคุณไปที่นี่'สามารถถูกเติมเต็มด้วยแบบสอบถามใด ๆ ที่คุณจะใช้ในกล่องจดหมายของคุณ
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 ตรวจสอบสเปรดชีตดั้งเดิมของคุณและจะมีอีเมล
;
,
วิธีเดียวที่จะทำเช่นนี้คือ
หมายเหตุ: หากคุณใช้ imapsize (ฟรี) สำหรับขั้นตอนที่ 1 ให้บันทึกข้อมูลสำรองเป็น "% FROM - ผู้ส่งอีเมล" และคุณมีข้อมูลสำรองในไดเรกทอรีของคุณ
ฉันคิดหาวิธีการนี้สำหรับผู้ใช้ Mac ที่ใช้ Mac Mail และสมุดที่อยู่โดยไม่จำเป็นต้องดาวน์โหลดซอฟต์แวร์เพิ่มเติม ใช้ได้กับ Mac Mail 4.6 และ Address Book 5.0.3 ไม่แน่ใจว่าใช้ได้กับเวอร์ชั่นอื่นหรือไม่ สิ่งนี้อาจทำงานคล้ายกับโปรแกรมอีเมล IMAP อื่น ๆ เช่น Thunderbird แต่ฉันไม่สามารถรับรองได้
นี่คือขั้นตอน:
หวังว่านี่จะช่วยได้! มันค่อนข้างยุ่งยาก แต่เหมาะสำหรับฉันและค่อนข้างง่ายหลังจากคุณทำสองสามครั้ง
MineMyMailดึงข้อความทั้งหมดของคุณผ่าน IMAP แล้วแยกที่อยู่อีเมลออก
คุณสามารถเลือกโฟลเดอร์ที่ค้นหาได้โดยเลือกโฟลเดอร์ / ป้ายกำกับ "จดหมายที่ส่งแล้ว"
ผู้ส่งออกที่อยู่ IMAPเป็น Mac App ที่เชื่อมต่อกับบัญชีอีเมล IMAP ใด ๆ และแยกที่อยู่ผู้ส่งทุกรายจากโฟลเดอร์ / ป้ายกำกับที่คุณตั้งไว้ก่อนหน้านี้ ในความเป็นธรรมฉันต้องเน้นว่ามันถูกพัฒนาโดย บริษัท ของฉัน