Google ドライブのルートから大量のファイルを削除する
【注意】
この記事はGoogle Drive上のファイル削除に関するものです。
誤って必要なファイルを消してしまわないよう、実行には充分注意してください。
どうしてこうなった
Google Colab用に動画から学習用のデータを切り出そうとして、Google ドライブのルートに大量(数万件)のファイルを吐き出してしまいました。
Colabでもう一度マウントして消そうと思ったのですが、ファイルが大量にあるとタイムアウトするんですね…。
解決策
流石に手作業ではつらすぎるので、GASの助けを借りて削除することにしました。
GoogleDriveの画面から「新規」→「その他」→「 Google Apps Script」を開きます
こんな感じでエディタ画面が開きます
エディタ画面に以下のスクリプトを貼り付けて保存(Ctrl + S)
function myFunction() {
// ルートフォルダを取得
var folder = DriveApp.getRootFolder()
// ルートフォルダからjpeg形式のファイルだけを抽出
var files = folder.getFilesByType("image/jpeg");
var delCount = 0
while (files.hasNext()) {
var buff = files.next();
var fileName = buff.getName()
// 誤削除が怖いので念のためファイル名の先頭を確認
if (fileName.startsWith("IMG_")) {
delCount++
var fileId = buff.getId()
const file = DriveApp.getFileById(fileId);
file.setTrashed(true); // ゴミ箱に移動
Logger.log(`count:${delCount}, file: ${fileName}`);
};
};
}
保存が完了すると上段の実行ボタンが押せるようになるので、ボタンを押して実行
怖めの警告が出ますが、自分で作ったものなので「詳細」から許可します
※当たり前ですが、自己責任でお願いしますね
権限を与えると、こんな感じで削除されていきます
Google Driveからゴミ箱を確認するとガンガン増えていってるので、時々空にしながら完了を待ちます。
GASは実行時間に制限があるようなので定期的に再実行しなければなりませんが、手作業よりだいぶ楽になりました。