Move duplicate files to the trash.

Find the same file with md5 in Drive.Files.list에 이어서

배열에 있는 파일 객체에서 md5Checksum 속성이 같은 것만 추출하려고 이것 저것 알아 봤습니다.
배열의 필터나 map을 사용하면 된다고하는데 제 작업에는 맞지 않습니다.

제약 사항으로 Drive.Files.list로 한번에 모든 파일을 읽어 올 수 없습니다.
스크립트 실행시간이 최대 6분이라 그 전에 작업 환경을 저장해 두고 트리거로 쿼리 작업을 호출해야 합니다.

md5 속성이 같은 것만 추출하기 위해서 쿼리한 파일 목록에서 파일 하나를 읽어서 저장해 둡니다.
그리고 다음 파일을 하나씩 가져와서 비교합니다.

가져온 파일이 저장한 파일과 다르면 저장 파일에 가져온 파일을 대입하고 다음 파일을 읽습니다.

md5가 같으면 저장된 파일과 읽은 파일 둘을 스프레드시트에 기록합니다.
다음부터 파일이 같으면 가져온 파일만 스프레드시트에 기록합니다.

어제 Find 버튼을 클릭해서 만들어진 스프레드시트입니다.


Deduper Spreadsheet 1560830988322.png



로그 스프레드시트를 보고 구글 서버의 내부 오류가 있었을 때 Find 버튼을 눌러서 계속 작업을 시켰습니다.

마지막 행에 Start가 기록된 상태로 멈춰있습니다.
Start 다음에 Continue나 Error가 나와야하는데 없는 걸 보니 작업이 중단된 상태입니다.

Log Search 1558768360813.png



구글 서버의 하루 할당량 제한이 초기화되려면 24시간 기다려야 됩니다.
그 후에 Find 버튼을 클릭하면 작업이 계속될 겁니다.

이제 스프레드시트에 중복된 파일을 모으는 기능은 완료된 것 같습니다.

다음으로 할 일은 중복된 파일 중에서 가장 먼저 생성된 파일만 남기고 나머지는 삭제하면 됩니다.
중복된 파일을 바로 삭제하면 복구가 어렵습니다.

휴지통을 거쳐서 삭제하면 안전한데 휴지통은 이미 다른 파일이 있어서 중복된 파일을 찾아서 복구할때 어렵습니다.

그래서 휴지통으로 이동할 폴더를 만들고 이 폴더에 중복된 파일을 넣겠습니다.





코딩에 필요한 API


orderBy


A comma-separated list of sort keys. Valid keys are 'createdDate'


Insert and move files between folders
https://developers.google.com/drive/api/v2/folder


drive.files.trash


댓글

이 블로그의 인기 게시물

Share a Google Form as “View Only”

Advanced Drive Service in Apps Script.