はじめに
ESP32-CAMを使ったウェブカメラを製作。
撮影した画像は、Googleドライブに保存しています。
【IoT】ESP32-CAMを使ってWEBカメラを自作してみた(使い方編)
そして、保存しているとファイルが溜まる一方なので、定期的に削除するプログラムを作ってみました。
【自動削除】Google Driveに保存したファイルを定期的に削除するプログラム
ただし、ファイル数が多くなると、稀に次のエラーが通知が届くようになりました。
ファイル数が少ない場合は、上記のコードで上手くいきました。
エラーメッセージの考察
コード的には、指定した時間のタイムアウト時に再度トリガーを設定するようにしていました。
このエラーメッセージを読むと、トリガー数が多すぎるというエラーのようです。
Start | Function | Error Message | Trigger | End |
---|---|---|---|---|
2023-10-16 01:04:56 Japan Standard Time | deleteOldFiles | Exception: This script has too many triggers. Triggers must be deleted from the script before more can be added. | time-based | 2023-10-16 01:08:57 Japan Standard Time |
対策コードを書いてみる
タイムアウト時のトリガーの再設定から、ファイルを分割して削除する方法に変更します。
これでトリガー数のエラーは回避できるはず。
function trashOldFiles_002() { var folderName = "〇〇〇〇〇〇"; // 時限削除したいフォルダの名前 var days = 30; // バッファを見て30日 var folders = DriveApp.getFoldersByName(folderName); while (folders.hasNext()) { var folder = folders.next(); processFiles(folder, days); } } function processFiles(folder, days) { var files = folder.getFiles(); while (files.hasNext()) { var file = files.next(); if (new Date() - file.getLastUpdated() > days * 24 * 60 * 60 * 1000) { file.setTrashed(true); } } }
おわりに
2週間ほど運用しましたが、いまのところエラーはありません。
関連記事
- 【webカメラ】ESP32-CAMで撮影した写真をgoogleドライブに転送してみた。【前編】
- 【webカメラ】ESP32-CAMで撮影した写真をgoogleドライブに転送してみた。【前編】
- 【自動削除】Google Driveに保存したファイルを定期的に削除するプログラム
コメント