自作のWebカメラを使って定時にGoogleDriveに画像を保存しています。
過去に、自動削除プログラムを公開していましたが、稀に起こるタイムアウト問題。 今回の対処方法は最終版と言っていいほど安定しています。
GoogleDriveに保存したファイルの自動削除プログラム
前回はタイムアウトを監視してトリガーの再設定を行うバージョンでした。
対処法を悩んだ結果、削除するファイル数を減らして、処理時間を短くしてみました。
1回の処理で100ファイルを削除する方法です。 指定したファイル数を削除したら終了なので、短時間の処理になります。
何で気が付かないかな~
function trashFile() { var folderName = "ABC"; // 時限削除したいフォルダの名前 var days = 30; // バッファを見て30日 var batchSize = 100; // 削除するファイル数 var folders = DriveApp.getFoldersByName(folderName); while (folders.hasNext()) { var folder = folders.next(); var files = folder.getFiles(); var batchCounter = 0; while (files.hasNext() && batchCounter < batchSize) { var file = files.next(); if (new Date() - file.getLastUpdated() > days * 24 * 60 * 60 * 1000) { file.setTrashed(true); batchCounter++; } } // 指定した数のファイルを削除したら終了 if (batchCounter >= batchSize) { return; } } }
WEBカメラでは2分おきに撮影してGoogleDriveにファイルを転送しています。
よって、1日にアップロードされるファイル数は
1440分×1/2分枚=720枚
2時間おきに100ファイル削除するので、1200枚/日の削除になります。
スクリプトの実行エラーが発生しても次のトリガーでリカバリーできます。
とりあえず、2時間おきに100ファイルずつ削除しています。処理時間も100秒から200秒程度でした。 ファイル数が多くなったらトリガーを1時間おきに設定するか1回の処理数を増やしたいと良いと思います。
コメント