구글 특정메일 첨부파일을 드라이브에 연도별로 정리 저장하는 법
-
구글 메일에서 첨부파일을 저장하고 싶은 메일들의 규칙을 설정합니다.

-
메일 상단 필터 눌러서 검색 조건을 설정하고
필터 만들기 클릭

-
다음 라벨적용을 눌러 라벨을 지정하거나 새 라벨 만들기

-
필터 만들기 클릭 하면 이제 앞으로 해당 조건에 만족하는 메일은 모두 라벨이 적용 됩니다.
-
이제 링크로 가서 새 프로젝트 클릭

-
기존코드 모두 지우고 아래 코드 붙여 넣기
function saveAttachmentsToDrive() {
var label = GmailApp.getUserLabelByName("여기에 라벨 이름"); // 사용할 라벨 이름
var threads = label.getThreads(); // 해당 라벨을 가진 모든 스레드 검색
var rootFolder = getOrCreateFolder(null, '저장할 폴더 이름'); // 루트 폴더 생성 또는 가져오기
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages(); // 각 스레드의 메시지 가져오기
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var attachments = message.getAttachments(); // 메시지의 모든 첨부파일 가져오기
var year = Utilities.formatDate(message.getDate(), "GMT", "yyyy"); // 메시지의 도착 연도
var yearFolder = getOrCreateFolder(rootFolder, year); // 연도별 폴더 생성 또는 가져오기
var subject = message.getSubject(); // 메시지 제목
Logger.log('Processing email: ' + subject); // 이메일 처리 로그
for (var k = 0; k < attachments.length; k++) {
var attachment = attachments[k];
if (!fileExists(yearFolder, attachment.getName())) { // 파일이 이미 존재하는지 확인
yearFolder.createFile(attachment); // 존재하지 않으면 첨부파일을 드라이브에 저장
Logger.log('Saved attachment: ' + attachment.getName() + ' from email: ' + subject); // 저장 로그
}
}
}
}
}
// 폴더를 생성하거나 존재하는 폴더를 가져오는 함수
function getOrCreateFolder(parent, folderName) {
var folders = parent ? parent.getFoldersByName(folderName) : DriveApp.getFoldersByName(folderName);
if (folders.hasNext()) {
return folders.next();
} else {
return parent ? parent.createFolder(folderName) : DriveApp.createFolder(folderName);
}
}
// 파일이 이미 폴더에 존재하는지 확인하는 함수
function fileExists(folder, fileName) {
var files = folder.getFilesByName(fileName);
return files.hasNext();
}
-
코드 제일 상단 라벨 이름은 아까 지정한 라벨 명으로 기입하고
-
폴더명도 원하는데로 지정.
-
왼쪽 서비스 옆 + 를 클릭

-
Drive API, Gmail API를 추가

-
완료가 되면 아래와 같이 나와야 합니다.

-
왼쪽에서 트리거를 클릭

-
트리거 추가를 누르고 아래와 같이 설정. 시간 간격은 원하는데로

-
그리고 저장.
끝!
실행 버튼 눌러서 테스트하고 구글 드라이브에 들어가서 확인하세요