Unorganized files

구글 드라이브에서 잃어버린 파일 찾기


구글 드라이브에서 파일은 폴더에 속해 있습니다.

그런데 어떤 폴더에도 속하지 않는 파일이 생길 수 있습니다.

이런 파일을 분리된 파일 또는 고아 파일이라 부릅니다.


폴더 소유자는 폴더를 공유할 수 있습니다.

공유 받은 사용자가 폴더 내에 있는 파일을 자신의 폴더로 이동하면 파일은 원래 사용자 폴더로부터 분리됩니다.

사용자가 가진 어떤 폴더에도 속해 있지 않는 파일은 일반적인 방법으로 접근할 수 없습니다.


먼저 분리된 파일을 검색하는 방법을 알아보고 분리된 파일을 찾아서 폴더에 연결하는 앱을 소개합니다.

Find a missing Drive file you created

support.google.com/a/answer/6008339

If you create a file in Drive that you later can’t find, the file might have lost all of its parent folders. It becomes an orphaned file. The file still exists but is harder to find.

Find your orphaned files

In the Drive search field, type: is:unorganized owner:me.

https://drive.google.com/drive/search?q=is:unorganized%20owner:me

개인정보 취급 방침

eojji.com/privacy

스크립트에 필요한 OAuth 범위 4개:

https://www.googleapis.com/auth/drive

https://www.googleapis.com/auth/script.scriptapp

https://www.googleapis.com/auth/spreadsheets

https://www.googleapis.com/auth/userinfo.email

App 사용자가 소유한 모든 파일을 대상으로 부모 폴더가 있는지 검사하고 분리된 파일을 특정 폴더에 모으기 위해서 폴더를 생성합니다.

이 과정에서 Drive Service( https://developers.google.com/apps-script/reference/drive/ )와 Advanced Drive Service( https://developers.google.com/apps-script/advanced/drive )를 사용합니다. 이를 위해서 https://www.googleapis.com/auth/drive 권한이 필요합니다.


분리된 파일을 복구하는 도중에 스크립트 시간 제약으로 작업이 중단됩니다. 중단된 작업을 계속하기 위해서 Trigger를 사용합니다. 이를 위해서 https://www.googleapis.com/auth/script.scriptapp 권한이 필요합니다.


App에서 파일이나 폴더 복사 과정을 스프레드시트에 기록하기 위해서 https://www.googleapis.com/auth/spreadsheets 권한이 필요합니다.


App 사용자의 이메일을 화면에 표시 하기 위해서 getEffectiveUser( https://developers.google.com/apps-script/reference/base/session#getEffectiveUser() )를 사용합니다. 이를 위해서 https://www.googleapis.com/auth/userinfo.email 권한이 필요합니다.

Log Spreadsheet


앱 사용자가 Collect 버튼을 클릭하면 앱 사용자가 소유한 모든 파일을 100개씩 읽으면서 분리된 파일이면 Find orphaned files in drive 폴더에 넣습니다.

이 작업은 6분 주기로 중단되었다 시작하기를 반복합니다.


앱이 작업하는 과정을 로그 스프레드시트에 기록합니다.

화면에서 Log sheet 링크를 클릭하면 볼 수 있습니다.


만약 할당된 스크립트 실행 시간이 초과하면 작업이 중단됩니다.

중단 시점에서 24시간 후에 resume 명령을 사용해서 이어서 작업할 수 있습니다.


할당량 초과가 아닌 오류로 작업이 중단되었다면 resume 명령을 사용해 보세요.

앱 개발 이력



nextPageToken을 스프레드시트에 기록합니다.

nextPageToken 값은 사용자가 소유한 파일을 페이지 단위로 읽을 때 다음 페이지를 읽기 위해서 필요합니다.

developers.google.com/drive/api/v2/reference/files/list


로그 스프레드시트의 F1 셀에 nextPageToken 값을 기록합니다.

cell = sheet.getRange('F1');

cell.setValue(pageToken);



Stop 버튼 추가

앱 화면의 Stop 버튼을 누르면 로그 스프레드시트의 G1 셀에 stop을 기록합니다.

찾기 작업 중에 Stop 버튼을 누르면 최대 6분 간 작업이 지속될 수 있으며 trigger를 사용해서 찾기 작업이 예약됩니다.

예약된 작업이 시작되면서 G1셀에 stop이 기록 되어 있는지 검사합니다.

G1 셀의 값이 stop이면 작업을 더 이상 진행하지 않습니다.



분리된 파일 찾기 | Google 드라이브

cafe.naver.com/eojji/547



Orphan File Finder for Google Drive

cafe.naver.com/eojji/548