【GoogleDrive】自動ファイル削除でタイムアウトする場合の対応方法

GoogleDriveのファイルを自動削除するプログラムVer2 電子工作
PR

はじめに

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);
    }
  }
}
PR

おわりに

2週間ほど運用しましたが、いまのところエラーはありません。

PR

関連記事

created by Rinker
Moechando
¥1,490 (2024/04/18 07:14:24時点 Amazon調べ-詳細)

コメント

タイトルとURLをコピーしました