저에게 전자 메일을 보낸 사람의 전자 메일 주소가 포함 된 목록을 내보내려면 어떻게해야합니까? 모든 메시지를 보관했습니다.
저에게 전자 메일을 보낸 사람의 전자 메일 주소가 포함 된 목록을 내보내려면 어떻게해야합니까? 모든 메시지를 보관했습니다.
답변:
나는 몇 가지 추가 도구를 암시하는 모든 복잡한 답변에 상당히 놀랐습니다! 받는 모든 이메일 주소는 Gmail 주소록의 '내 주소록'과 반대로 '모든 주소록'에 주소가 추가됩니다. 그 것을 내 보내면 완료됩니다 (또는 귀하의 질문에 뭔가 빠졌습니다).
여기에서 Google Apps Script의 기능이 시작됩니다. 새 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는 이름을 딥 이메일 추출기로 이름을 변경했으며 앱 UI를 개정하고 여러 계정에서 작동하도록 만들었습니다 (방금 내 앱에 로그인 한 상태로 발견 됨).이를 반영하기 위해 아래 링크를 변경했습니다.
원래 답변
스크립트가 아닌 빠른 데스크톱 앱이 필요한 경우이를 고려하십시오.
라벨 수준에서 작동하는 앱을 검색하고 deep-email-extractor 에서 Gmail Email Exporter를 찾았습니다 .
유료 앱이지만 그들과 아무 관련이 없지만 싸구려 특정 라벨이나 모든 Gmail 계정에서 이메일 주소를 내보낼 수 있습니다.
따라서 귀하의 경우 필터를 사용하여받은 모든 이메일을 레이블에 넣고 위의 내용을 사용하여 CSV 파일로 내 보냅니다.
@ jacob-jan-tuinstra의 답변을 바탕으로합니다. 내 필요에 맞게 약간의 수정을 시켜서 다른 사람들이 유용 할 수도 있습니다.
검색을 사용하고 라벨별로 분류하지 않으며 큰받은 편지함을 청킹합니다.
'YOUR GMAIL SEARCH QUERY GOES HERE' 라고 표시된 부분은 받은 편지함에 사용할 쿼리로 채울 수 있습니다.
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 단계. 원본 스프레드 시트를 확인하면 이메일이 발송됩니다.
;
거나 or로 바꾸면됩니다 ,
.이를 수행하는 유일한 방법은
참고 : 1 단계에서 imapsize (무료)를 사용하는 경우 백업을 "% FROM-이메일 발신자"로 저장하면 디렉토리에 잘 보입니다.
추가 소프트웨어를 다운로드하지 않고도 Mac Mail 및 주소록을 사용하는 Mac 사용자를 위해이 작업을 수행하는 방법을 찾았습니다. 이것은 Mac Mail 4.6 및 Address Book 5.0.3에서 작동합니다. 그것이 다른 절에서 작동하는지 확실하지 않습니다. 이것은 Thunderbird와 같은 다른 IMAP 이메일 프로그램에서도 유사하게 작동 할 수 있지만 보증 할 수는 없습니다.
단계는 다음과 같습니다.
이것이 도움이되기를 바랍니다! 약간 성가 시지만 나를 위해 일하고 몇 번 해본 후에는 매우 쉽습니다.
MineMyMail 은 IMAP을 통해 모든 메시지를 가져온 다음 이메일 주소를 추출합니다.
"보낸 편지함"폴더 / 라벨을 선택하여 검색 할 폴더를 선택할 수 있습니다.
IMAP 주소 내보내기 는 모든 IMAP 이메일 계정에 연결하고 이전에 설정 한 폴더 / 라벨에서 모든 발신자 주소를 추출하는 Mac 앱입니다. 모든 공정성에서, 나는 그것이 회사가 개발했음을 강조해야합니다.