구글 특정메일 첨부파일을 드라이브에 연도별로 정리 저장하는 법

  1. 구글 메일에서 첨부파일을 저장하고 싶은 메일들의 규칙을 설정합니다.
    구글 첨부파일을 드라이브에 저장하는 법-20240510144850864.webp

  2. 메일 상단 필터 눌러서 검색 조건을 설정하고
    필터 만들기 클릭
    구글 첨부파일을 드라이브에 저장하는 법-20240510144941997.webp

  3. 다음 라벨적용을 눌러 라벨을 지정하거나 새 라벨 만들기
    구글 첨부파일을 드라이브에 저장하는 법-20240510145129516.webp

  4. 필터 만들기 클릭 하면 이제 앞으로 해당 조건에 만족하는 메일은 모두 라벨이 적용 됩니다.

  5. 이제 링크로 가서 새 프로젝트 클릭

    구글 첨부파일을 드라이브에 저장하는 법-20240510145332828.webp

  6. 기존코드 모두 지우고 아래 코드 붙여 넣기

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();
}
  1. 코드 제일 상단 라벨 이름은 아까 지정한 라벨 명으로 기입하고

  2. 폴더명도 원하는데로 지정.

  3. 왼쪽 서비스 옆 + 를 클릭
    구글 첨부파일을 드라이브에 저장하는 법-20240510145816824.webp

  4. Drive API, Gmail API를 추가

    구글 첨부파일을 드라이브에 저장하는 법-20240510145841247.webp

  5. 완료가 되면 아래와 같이 나와야 합니다.
    구글 첨부파일을 드라이브에 저장하는 법-20240510150051125.webp

  6. 왼쪽에서 트리거를 클릭
    구글 첨부파일을 드라이브에 저장하는 법-20240510150136680.webp

  7. 트리거 추가를 누르고 아래와 같이 설정. 시간 간격은 원하는데로
    구글 첨부파일을 드라이브에 저장하는 법-20240510150219624.webp

  8. 그리고 저장.

끝!

실행 버튼 눌러서 테스트하고 구글 드라이브에 들어가서 확인하세요