Làm cách nào tôi có thể xuất danh sách chứa địa chỉ e-mail cho mọi người đã gửi e-mail cho tôi? Tôi có tất cả các tin nhắn được lưu trữ.
Làm cách nào tôi có thể xuất danh sách chứa địa chỉ e-mail cho mọi người đã gửi e-mail cho tôi? Tôi có tất cả các tin nhắn được lưu trữ.
Câu trả lời:
Tôi khá ngạc nhiên bởi tất cả các câu trả lời phức tạp ngụ ý một số công cụ bổ sung! Mỗi email bạn nhận được có địa chỉ được thêm vào "Tất cả danh bạ" (trái ngược với "Danh bạ của tôi") trong phần Danh bạ của Gmail. Xuất cái đó và bạn đã hoàn thành (hoặc tôi đã bỏ lỡ điều gì đó trong câu hỏi của bạn).
Đây là nơi phát huy sức mạnh của Google Apps Script. Nếu bạn dán đoạn mã sau vào Bảng tính Google mới (Công cụ, Trình chỉnh sửa tập lệnh, nhấn biểu tượng lỗi để xác thực tập lệnh), thì các trang tính mới sẽ được tạo tự động dựa trên số của nhãn hiện tại. Sau đó, các địa chỉ email sẽ được thêm vào.
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);
}
Sử dụng SPLIT
chức năng để trích xuất tên để tìm bản sao. Thư mục hệ thống được bỏ qua, như INBOX
hoặc All Items
.
Lưu ý: tập lệnh có thể mất một chút thời gian để thực thi, tất nhiên, điều này phụ thuộc vào số lượng e-mail
Cập nhật 2017
Starbanana đã đổi tên thành trình trích xuất email sâu và có vẻ như đã tân trang lại Giao diện người dùng ứng dụng và làm cho nó hoạt động trên nhiều tài khoản (phát hiện ra rằng vừa đăng nhập vào ứng dụng của tôi), đã thay đổi liên kết bên dưới để phản ánh điều này.
Câu trả lời gốc
Nếu bạn cần một ứng dụng máy tính để bàn nhanh (không phải là tập lệnh) thì hãy xem xét điều này.
Tôi đã thực hiện khá nhiều việc tìm kiếm một ứng dụng hoạt động ở cấp độ nhãn và tìm thấy Trình xuất email của Gmail từ trình trích xuất email sâu .
Đó là một ứng dụng trả phí (tôi không có gì để làm với họ) nhưng nó rẻ và bạn có thể xuất địa chỉ email từ các nhãn cụ thể hoặc tất cả tài khoản Gmail của bạn.
Vì vậy, trong trường hợp của bạn, hãy đặt tất cả email của bạn nhận được vào nhãn bằng bộ lọc và sử dụng ở trên để xuất sang tệp CSV.
Dựa trên câu trả lời của @ jacob-jan-tuinstra. Thực hiện một số sửa đổi nhỏ cho phù hợp với nhu cầu của tôi có lẽ những người khác sẽ thấy nó hữu ích.
Sử dụng tìm kiếm, không chia tay bởi các nhãn và cũng không tìm kiếm các hộp thư đến lớn.
Phần có nội dung 'TÌM KIẾM GMAIL CỦA BẠN TÌM KIẾM TẠI ĐÂY' có thể được điền vào bất kỳ truy vấn nào bạn sẽ sử dụng trong hộp thư đến của mình.
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);
}
Các ứng dụng sau đây là miễn phí và hoạt động đẹp!
Hãy thử từng bước một và cảm ơn https://webapps.stackexchange.com/a/47930/6329
bước 1. drive.google.com
bước 2. bảng tính mới
bước 3. công cụ> biên tập kịch bản
Bước 4. đóng phần giới thiệu bật lên bằng nút đóng
bước 5. dán mã
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);
}
bước 6. định vị con trỏ của bạn trong từ "getEmails" trong dòng đầu tiên
Bước 7. nhấp vào nút tam giác phát ở trên trong thanh menu
Bước 8. Nó yêu cầu bạn xác thực, làm điều đó
Bước 9. nhấp vào nút phát lại nếu nó chưa chạy
bước 10. kiểm tra bảng tính gốc của bạn và nó sẽ có email.
;
hoặc ,
.Cách duy nhất để làm điều này là
Lưu ý: nếu bạn sử dụng imapsize (miễn phí) cho bước 1 thì hãy lưu các bản sao lưu dưới dạng "% TỪ - Người gửi email" và bạn có chúng trong tầm nhìn rõ ràng trong thư mục của bạn.
Tôi đã tìm ra một cách để làm điều này cho người dùng Mac bằng Mac Mail và sổ địa chỉ mà không cần phải tải xuống phần mềm bổ sung. Điều này hoạt động với Mac Mail 4.6 và Sổ địa chỉ 5.0.3. Không chắc chắn nếu nó hoạt động cho các câu khác hay không. Điều này có thể hoạt động tương tự cho các chương trình Email IMAP khác như Thunderbird, nhưng tôi không thể đảm bảo điều đó.
Dưới đây là các bước:
Hi vọng điêu nay co ich! Nó hơi cồng kềnh, nhưng làm việc với tôi và khá dễ dàng sau khi bạn làm điều đó một vài lần.
MineMyMail tìm nạp tất cả các tin nhắn của bạn thông qua IMAP và sau đó trích xuất các địa chỉ email từ nó.
Bạn có thể chọn thư mục mà nó tìm kiếm bằng cách chọn thư mục / nhãn "Thư đã gửi".
Trình xuất địa chỉ IMAP là Ứng dụng Mac kết nối với bất kỳ tài khoản email IMAP nào và trích xuất mọi địa chỉ người gửi, cũng từ các thư mục / nhãn bạn đã đặt trước đó. Trong tất cả các công bằng, tôi phải nhấn mạnh rằng nó được phát triển bởi công ty của tôi.