앱스 스크립트 사용법 (9) 구글 드라이브 폴더 내 파일리스트 추출

이번에는 앱스 스크립트 사용법 (3) 구글 드라이브에 접근하기 를 확장해서 구글 드라이브 폴더내에 있는 파일 리스트를 만들어주는 시트를 만들어 보겠습니다.

개요

  1. 파일 리스트를 만들고 싶은 폴더에 스프레드시트를 만든다.
  2. 앱스 스크립트로 스프레드시트가 있는 폴더의 파일 리스트 정보를 가져온다
  3. 앱스 스크립트로 스프레드시트에 파일 리스트 정보를 출력한다.

★샘플 폴더
https://drive.google.com/drive/folders/14BksBPqnpMthDeRZeEc2xQ7Dz5epwkRj?usp=sharing

Google Apps Script 개발자 사이트에서 참고한 페이지

시트 준비하기

파일 리스트를 만들고 싶은 폴더에 새로운 스프레드시트를 만듭니다.

스프레드시트 이름이나 시트 이름은 달라도 상관없습니다.

앱스 스크립트를 작성

도구 > 스크립트 편집기 메뉴를 클릭합니다.

스크립트 편집 화면에 아래 코드를 넣고 저장합니다.

function get_filelist() {
  
  var thisFile = DriveApp.getFileById(SpreadsheetApp.getActive().getId());
  var folders = thisFile.getParents()
  var folderId;
  while (folders.hasNext()) {
    var folder = folders.next();
    folderId = folder.getId();
    break;
  }
  
  // get This Folder ID
  var daforder = DriveApp.getFolderById(folderId);
  var dafiles = daforder.getFiles();

  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();

  var srow = 1;
  // Write Header
  sheet.getRange(srow, 1).setValue("file name");
  sheet.getRange(srow, 2).setValue("만들어진 날짜");
  sheet.getRange(srow, 3).setValue("마지막으로 수정한 날짜");
  sheet.getRange(srow, 4).setValue("소유자");
  sheet.getRange(srow, 5).setValue("file type");
  sheet.getRange(srow, 6).setValue("Link");
  // Set Header color
  var range = sheet.getRange("A1:F1");
  range.setBackground("#f3f3f3");
  
  // Get file names
  while(dafiles.hasNext()){
    var dafile = dafiles.next();
    var file_name = dafile.getName();
    
    srow = srow + 1;
    // Write file info
    sheet.getRange(srow, 1).setValue(file_name);
    sheet.getRange(srow, 2).setValue(dafile.getDateCreated());
    sheet.getRange(srow, 3).setValue(dafile.getLastUpdated());
    sheet.getRange(srow, 4).setValue(dafile.getOwner().getName());
    sheet.getRange(srow, 5).setValue(dafile.getMimeType().replace('application/vnd.google-apps.', 'google '));
    sheet.getRange(srow, 6).setValue(dafile.getUrl());
    
  }
  
  range = sheet.getRange("F:F");
  range.setWrapStrategy(SpreadsheetApp.WrapStrategy.CLIP);
  
}

프로젝트 이름은 get_filelist_fromGD 라고 저장합니다.

실행 > 함수 실행 > get_filelist 를 클릭합니다.

처음 실행하실 때, 권한 요청을 해옵니다. 실행을 허용해주세요.
(스크린샷은 생략합니다. 자세한 내용은 앱스 스크립트 사용법 (1) 메일 보내기 > 실행 권한 허용 을 확인해주세요.)

스크립트 실행

스크립트를 허용 후 실행하면 시트에 파일 리스트가 작성된 것을 확인할 수 있습니다.

★샘플 스프레드시트
https://docs.google.com/spreadsheets/d/15VaX3iDnzUfucvqTjU7zF-CJCbWYrZzuVSsWVUIsVmg/edit?usp=sharing

폴더 안에서 찾은 파일마다 파일 이름, 만들어진 날짜, 마지막으로 수정한 날짜, 소유자, file type, Link 정보를 출력합니다. 공개한 샘플 폴더에는 스프레드시트, 프레젠테이션과 같은 구글 드라이브 전용 파일 이외의 일반적인 파일도 리스트로 출력할 수 있는 것을 알 수 있도록 txt 파일, 이미지 파일, 동영상 파일 등의 샘플 파일을 넣어두었습니다.

구글 앱스 스크립트의 다른 활용법을 알고싶으시다면!
» G Suite 사용법 #5 앱스 스크립트 활용 예시 모음

6 Replies to “앱스 스크립트 사용법 (9) 구글 드라이브 폴더 내 파일리스트 추출”

  1. 파일 추출 후 검색 조건을 걸고 싶습니다. 예를 들어 본문에 특정단어가 포함되어있다는 조건 같은걸 찾고 잇는데 적용하기가 어려워서요

    좋아요

  2. 혹시 하위폴더까지 검색을 할 방법이 있을까요.. 폴더가 약 1000개나 되다 보니 각 폴더별로 들어가서 할수가 없는 상태입니다 ㅠ

    좋아요

  3. 업로드한 파일 하나하나 코드를 복붙하다가 이 포스팅을 발견하고 반복 노가다에서 해방됐습니다. 정말 감사합니다.

    좋아요

  4. 안녕하세요! 이와 비슷한 스크립트를 모두 시도해봤는데 회사 공유드라이브 에서는 작동을 안하네요. 혹시 본인이 크리에이터가 아니지만 매니저인 권한상태에서 공유드라이브 하위 폴더의 파일 리스트와 파일 아이디를 추출할 수 있는 방법이 있을까요? 몇시간 째 서치하고 있는데 답이 보이지 않아 질문 남겨요 🙂

    좋아요

    1. 권한 문제가 아닐까 합니다.
      ① 폴더와 ② 파일리스트를 추출하기 위해 만든 스프레드시트 두개에 편집자 권한을 받으면 파일 리스트 출력할 수 있는 것을 확인했습니다.

      포스팅 예시로 말씀드리자면 ① “테스트용 폴더”라는 이름의 폴더와
      ② “[Apps Script] 구글 드라이브 내 파일 리스트 만들기 (확장판) 하위 폴더 포함”라는 이름의 스프레드시트에 편집자 권한으로 공유한 다른 계정에서 실행 성공했습니다.

      좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중