이번에는 앱스 스크립트 사용법 (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 앱스 스크립트 활용 예시 모음
파일 추출 후 검색 조건을 걸고 싶습니다. 예를 들어 본문에 특정단어가 포함되어있다는 조건 같은걸 찾고 잇는데 적용하기가 어려워서요
좋아요좋아요
데이터 > 필터 만들기 기능으로 필터를 만든다음에
조건을 걸고싶은 열의 필터에서
조건별 필터링 > 텍스트에 포함 선택하시고
값에 특정단어 넣으시면 됩니다.
필터 만들기 기능은 아래 포스팅 참고하시기 바랍니다.
구글 스프레드시트 사용법 (8) 데이터 필터링하기
https://smartagent.blog/2018/11/01/spreadsheet08/
좋아요좋아요
혹시 하위폴더까지 검색을 할 방법이 있을까요.. 폴더가 약 1000개나 되다 보니 각 폴더별로 들어가서 할수가 없는 상태입니다 ㅠ
좋아요좋아요
업로드한 파일 하나하나 코드를 복붙하다가 이 포스팅을 발견하고 반복 노가다에서 해방됐습니다. 정말 감사합니다.
좋아요좋아요
안녕하세요! 이와 비슷한 스크립트를 모두 시도해봤는데 회사 공유드라이브 에서는 작동을 안하네요. 혹시 본인이 크리에이터가 아니지만 매니저인 권한상태에서 공유드라이브 하위 폴더의 파일 리스트와 파일 아이디를 추출할 수 있는 방법이 있을까요? 몇시간 째 서치하고 있는데 답이 보이지 않아 질문 남겨요 🙂
좋아요좋아요
권한 문제가 아닐까 합니다.
① 폴더와 ② 파일리스트를 추출하기 위해 만든 스프레드시트 두개에 편집자 권한을 받으면 파일 리스트 출력할 수 있는 것을 확인했습니다.
포스팅 예시로 말씀드리자면 ① “테스트용 폴더”라는 이름의 폴더와
② “[Apps Script] 구글 드라이브 내 파일 리스트 만들기 (확장판) 하위 폴더 포함”라는 이름의 스프레드시트에 편집자 권한으로 공유한 다른 계정에서 실행 성공했습니다.
좋아요좋아요