Google Drive 폴더 구조, Apps Script로 손쉽게 트리 형태로 만들기 (파일 포함)
Google Drive를 사용하다 보면 특정 폴더의 전체 구조를 한눈에 파악하거나 다른 사람에게 공유해야 할 때가 있습니다. 하지만 아쉽게도 Google Drive 자체에는 폴더 구조만을 깔끔하게 트리 형태로 보여주거나 내보내는 기능이 기본으로 제공되지 않습니다.
하지만 방법이 없는 것은 아닙니다! Google Workspace의 강력한 자동화 도구인 Google Apps Script를 활용하면, 몇 줄의 코드로 내 드라이브의 폴더와 파일 구조를 원하는 형태로 만들 수 있습니다.
이 글에서는 Google Drive의 특정 폴더 (또는 전체 드라이브)의 폴더 및 파일 구조를 텍스트 기반 트리 형태로 추출하는 Google Apps Script와 그 사용 방법을 공유하고자 합니다.
왜 기본 기능이 없을까? 그리고 Apps Script가 필요한 이유
"이렇게 유용한 기능이 왜 기본으로 없을까?" 궁금하실 수 있습니다. 몇 가지 이유를 추측해볼 수 있습니다:
- 범용성: 모든 사용자에게 필요한 기능은 아닐 수 있습니다. Google은 핵심 기능 위주로 인터페이스를 간결하게 유지하려는 경향이 있습니다.
- 성능: 매우 큰 드라이브의 경우, 전체 구조를 스캔하는 데 많은 자원이 소모될 수 있습니다.
- Apps Script의 존재: Google은 Apps Script를 통해 사용자가 직접 필요한 기능을 맞춤 설정할 수 있도록 강력한 도구를 제공하고 있습니다.
Apps Script를 사용하면 다음과 같은 장점이 있습니다.
- 원하는 폴더만 선택 가능
- 파일 포함 여부 결정 가능
- 출력 형식 커스터마이징 가능 (이 글에서는 텍스트 트리)
Google Apps Script 코드
아래는 지정된 폴더 ID를 기준으로 하위 폴더와 파일 목록을 트리 형태로 Logger.log (스크립트 편집기 내 로그)에 출력하는 코드입니다.
/**
* 지정된 Google Drive 폴더의 폴더 및 파일 구조를 트리 형태로 로그에 출력합니다.
* 맞춤 메뉴를 생성하여 Google Sheets, Docs 등에서 쉽게 실행할 수 있도록 합니다.
*/
// 스크립트가 연결된 문서(예: Google Sheets)가 열릴 때 맞춤 메뉴를 생성합니다.
function onOpen() {
var ui = SpreadsheetApp.getUi(); // 또는 DocumentApp.getUi(), SlidesApp.getUi() 등 사용 환경에 맞게 변경
ui.createMenu('🚀 Drive 도우미') // 메뉴 이름
.addItem('선택 폴더 구조 보기', 'promptForFolderIdAndListTree') // 메뉴 항목 이름과 실행할 함수
.addToUi();
}
// 사용자에게 폴더 ID를 입력받아 폴더/파일 트리를 생성하는 함수
function promptForFolderIdAndListTree() {
var ui = SpreadsheetApp.getUi(); // 또는 DocumentApp.getUi() 등
var result = ui.prompt(
'폴더 구조 보기',
'폴더 ID를 입력하세요 (비워두면 최상위 드라이브부터 시작):',
ui.ButtonSet.OK_CANCEL);
var button = result.getSelectedButton();
var folderId = result.getResponseText();
if (button == ui.Button.OK) {
listFolderTreeWithFiles(folderId.trim()); // 입력받은 ID로 함수 호출
} else if (button == ui.Button.CANCEL) {
ui.alert('취소되었습니다.');
} else {
// 닫기 버튼 등
}
}
// 메인 함수: 폴더 및 파일 트리를 로깅합니다.
function listFolderTreeWithFiles(rootFolderId) {
var rootFolder;
if (rootFolderId && rootFolderId !== '') {
try {
rootFolder = DriveApp.getFolderById(rootFolderId);
} catch (e) {
Logger.log('오류: 잘못된 폴더 ID이거나 접근 권한이 없습니다. ' + e.toString());
SpreadsheetApp.getUi().alert('오류', '잘못된 폴더 ID이거나 접근 권한이 없습니다. ID와 권한을 확인해주세요.', SpreadsheetApp.getUi().ButtonSet.OK);
return;
}
} else {
rootFolder = DriveApp.getRootFolder(); // ID가 없으면 내 드라이브 최상위 기준
Logger.log('알림: 폴더 ID가 지정되지 않아 내 드라이브 최상위부터 시작합니다. 시간이 오래 걸릴 수 있습니다.');
}
Logger.log('📂 폴더 및 파일 트리: ' + rootFolder.getName() + ' (ID: ' + rootFolder.getId() + ')');
// 최상위 폴더의 파일 먼저 나열
logFiles(rootFolder, '📄 '); // 파일 접두사 변경
// 그 다음 하위 폴더 처리
getChildFoldersAndFiles(rootFolder, ''); // 초기 들여쓰기는 없음
Logger.log('✅ 작업 완료!');
SpreadsheetApp.getUi().alert('성공', '폴더 구조를 로그에 출력했습니다. (보기 > 로그)', SpreadsheetApp.getUi().ButtonSet.OK);
}
// 특정 폴더 내의 파일 목록을 로깅하는 함수
function logFiles(folder, indentPrefix) {
var files = folder.getFiles();
var fileIndent = indentPrefix;
while (files.hasNext()) {
var file = files.next();
Logger.log(fileIndent + file.getName() + ' (ID: ' + file.getId() + ')');
}
}
// 하위 폴더와 해당 폴더 내의 파일들을 재귀적으로 로깅하는 함수
function getChildFoldersAndFiles(parentFolder, indent) {
var childFolders = parentFolder.getFolders();
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
Logger.log(indent + '📁├── ' + childFolder.getName() + ' (ID: ' + childFolder.getId() + ')');
// 현재 폴더(childFolder) 내부의 파일들을 로그에 기록 (들여쓰기 및 파일 접두사 적용)
logFiles(childFolder, indent + '│ 📄 ');
// 하위 폴더가 더 있으면 재귀 호출 (다음 레벨 들여쓰기 추가)
getChildFoldersAndFiles(childFolder, indent + '│ ');
}
}
주요 변경점 및 설명:
onOpen(): Google Sheets, Docs 등에서 문서를 열 때 '🚀 Drive 도우미'라는 맞춤 메뉴를 생성합니다.promptForFolderIdAndListTree(): 메뉴 클릭 시 사용자에게 폴더 ID를 입력받는 대화상자를 띄웁니다. ID를 입력하지 않으면 최상위 드라이브부터 시작합니다.listFolderTreeWithFiles(rootFolderId): 핵심 로직이 담긴 함수입니다. 폴더 ID 유효성을 검사하고, 루트 폴더부터 파일 및 하위 폴더 탐색을 시작합니다.- 기호 변경: 폴더는
📁├──, 파일은📄로 시작하여 가독성을 높였습니다. - 알림: 작업 시작 및 완료 시 간단한 알림창을 띄웁니다.
스크립트 사용 방법
- 스크립트 편집기 열기:
- Google Sheets (추천), Google Docs 또는 Google Drive 홈 화면에서
새로 만들기>더보기>Google Apps Script를 선택합니다. - 기존 Google Sheets 또는 Docs 파일에 추가하려면 해당 파일을 열고
확장 프로그램>Apps Script를 클릭합니다.
- Google Sheets (추천), Google Docs 또는 Google Drive 홈 화면에서
- 코드 복사 및 붙여넣기:
- 위에 제공된 전체 코드를 복사하여 스크립트 편집기의
Code.gs파일에 붙여넣습니다. (기존에 있던 내용은 모두 삭제해도 됩니다.)
- 위에 제공된 전체 코드를 복사하여 스크립트 편집기의
- 스크립트 저장:
- 스크립트 편집기 상단의 저장 아이콘(💾)을 클릭하거나
Ctrl+S(또는Cmd+S)를 눌러 스크립트를 저장합니다. 프로젝트 이름을 지정하라는 메시지가 나오면 적절한 이름을 입력합니다.
- 스크립트 편집기 상단의 저장 아이콘(💾)을 클릭하거나
- 스크립트 실행 (처음 실행 시 권한 부여 필요):
- 방법 1: 메뉴 사용 (추천)
- 스크립트를 저장한 Google Sheets 또는 Docs 파일을 새로고침하거나 다시 엽니다.
- 상단 메뉴에 '🚀 Drive 도우미'가 나타납니다.
- '🚀 Drive 도우미' > '선택 폴더 구조 보기'를 클릭합니다.
- 폴더 ID를 입력하는 창이 나타납니다.
- 특정 폴더의 구조를 보려면: 해당 폴더를 Google Drive에서 열었을 때 URL의
folders/뒤에 있는 문자열(예:1a2b3c4d5e6f7g8h9i0j)을 입력합니다. - 내 드라이브 전체 구조를 보려면: 입력창을 비워두고 '확인'을 누릅니다. (주의: 드라이브 크기에 따라 매우 오래 걸리거나 시간제한으로 중단될 수 있습니다.)
- 특정 폴더의 구조를 보려면: 해당 폴더를 Google Drive에서 열었을 때 URL의
- 방법 2: 스크립트 편집기에서 직접 실행 (테스트용)
- 스크립트 편집기 상단의 함수 선택 드롭다운에서
promptForFolderIdAndListTree또는listFolderTreeWithFiles를 선택합니다. (listFolderTreeWithFiles를 직접 실행하려면 코드 내rootFolderId를 직접 지정해야 합니다.) - 실행(▶) 버튼을 클릭합니다.
- 스크립트 편집기 상단의 함수 선택 드롭다운에서
- 방법 1: 메뉴 사용 (추천)
- 권한 부여 (최초 1회):
- 스크립트를 처음 실행하면 '권한 필요' 대화상자가 나타납니다.
권한 검토를 클릭하고, 스크립트를 실행할 Google 계정을 선택합니다.- '이 앱은 Google에서 확인하지 않았습니다.'라는 경고가 표시될 수 있습니다. 직접 작성한 스크립트이므로
고급을 클릭하고(프로젝트 이름)(으)로 이동 (안전하지 않음)을 선택하여 권한을 부여합니다. - 요청하는 권한(Google Drive 파일 보기 및 관리 등)을 확인하고
허용을 클릭합니다.
- 결과 확인:
- 스크립트 실행이 완료되면 "성공" 알림창이 뜹니다.
- 스크립트 편집기에서
보기>로그(단축키:Ctrl+Enter또는Cmd+Enter)를 클릭하면 실행 로그 창에 폴더와 파일 구조가 트리 형태로 출력된 것을 확인할 수 있습니다.
📂 폴더 및 파일 트리: 내 드라이브 (ID: 0Axxxxxxxxxxxxxxxxx) 📄 내 드라이브 최상위 파일1.gdoc (ID: 1B...) 📄 내 드라이브 최상위 이미지.jpg (ID: 1C...) 📁├── 중요 문서 (ID: 1D...) │ 📄 계약서_v1.pdf (ID: 1E...) │ 📄 발표자료_최종.gslides (ID: 1F...) │ 📁├── 이전 버전 (ID: 1G...) │ │ 📄 계약서_v0.9.pdf (ID: 1H...) 📁├── 프로젝트 A (ID: 1I...) │ 📄 계획안.docx (ID: 1J...) │ 📄 참고자료.zip (ID: 1K...) ✅ 작업 완료!
추가 활용 팁
- 출력 위치 변경:
Logger.log()대신DocumentApp.getActiveDocument().getBody().appendParagraph()등을 사용하면 결과를 Google Docs 문서에 직접 작성할 수도 있습니다. 또는 Google Sheets에 행별로 정리할 수도 있습니다. - 특정 조건 필터링: 스크립트를 수정하여 특정 이름의 파일/폴더만 포함하거나 제외할 수 있습니다.
- HTML 출력:
HtmlService를 사용하면 접고 펼 수 있는 동적인 트리 뷰를 웹 앱이나 사이드바로 만들 수도 있습니다.
마무리
Google Apps Script를 사용하면 Google Drive의 폴더 구조를 원하는 대로 추출하고 관리하는 데 큰 도움이 될 수 있습니다. 처음에는 조금 복잡해 보일 수 있지만, 한번 설정해두면 반복적인 작업을 자동화하여 시간을 절약할 수 있습니다. 이 글이 여러분의 Drive 생활에 조금이나마 도움이 되었기를 바랍니다!