GoogleDriveのいらないファイルを削除した話
GoogleDriveって使っていますか?
私は、Picasaからはじまり、長い間GoogleDriveに写真をアップしまくっていて、気づいたら800Gもの容量になってました。
容量がそんなに増えたのは、1つにはバックアップとしてRAWファイル(CR2ファイル)も保存していたからですが、この際RAWはローカルのHDDに入れて、クラウドからは削除して、容量削減に取り組んでいます。
しかし、GoogleDriveのWebから、CR2で検索して、まとめて削除しようとすると、検索リストは一部しか表示されず、スクロールしていかないと次が出ない、なんてことで、とても数百、数千のファイルを削除するのは大変です。
ということで、GoogleDriveにアクセスして、CR2ファイルを一掃するスクリプトを作ってみました。
今回はGoogleDriveなので、まずは
sudo gem install google_drive
で便利なgemを取得して、
今回は面倒だったので、ざっと
から、アクセストークンを取得して、いざコーディング
require 'google/api_client' require 'google_drive' access_token = ”あくせすとーくん” # Creates a session. session = GoogleDrive.login_with_oauth(access_token) def searchAndDeleteCR2(target, pathArray) target.contents.each do |item| if item.class == GoogleDrive::Collection searchAndDeleteCR2(item, [pathArray, item.title]) elsif /cr2$/i === item.title puts "Delete: " + [pathArray, item.title].join('/') item.delete end end end target = ARGV.shift root = session.collection_by_title(target) p root.title searchAndDeleteCR2(root, [])
ちょっと安易なコーディングだけど、自分しか使わない便利スクリプトだから、これくらいで十分かな。
アクセストークンは機嫌があって、油断していると機嫌切れになるけど、基本的に便利便利。
(コード上で取得すればそんなことないけど、そんなに繰り返し使うわけじゃないから、今回はこれで実装しました。)
余談ですが、
item.delete
については、通常ゴミ箱にいれるだけだけど、空にするのが面倒な場合は、item.delete true
とするといいらしい。