LoginSignup
0
1

More than 3 years have passed since last update.

motionEyeOSからGoogleDriveにアップロードされたファイルをGoogleAppsScriptで定期的に消す(ゴミ箱のも)

Last updated at Posted at 2018-02-12

motionEyeOSでGoogleDriveにアップロードしてたら新しいファイルがアップロードされなくなった

理由

motionEyeOSはGoogleDriveの空きに関係なくどんどんアップロードする。
なので設定次第では1ヶ月もしない内に無料ストレージ分の15GBを食いつぶしてしまう。
保存先の空き容量が無いので保存できなくなっていた。

対策

motionEyeOSはどんどんアップロードするだけなので
GoogleDrive側で自動で消す仕組みにした。

今回利用したのは GoogleAppsScript。

〜2019/06/11追記〜
当初作ったのだとゴミ箱がいっぱいで結局容量を食いつぶしてしまうので
Googleで用意されているAPIを呼び出すことでゴミ箱からも削除されるように変更した

詳細

motionEye OSがアップロード先のフォルダから条件にあった古い作成日のフォルダを消す

GoogleAppsScriptコード

code.gs
/* motioneye OSが自動作成するGoogleドライブ内の特定のフォルダから古い作成日のフォルダをゴミ箱に移す */
function trashTemporaryFile() {
  var folderID = "9dfoHogeHogeHogedas9sadfn"; //時限削除したいフォルダのID(GoogleDriveでフォルダを選択した時のURL末尾ID)
  var days = 14; //日数

  var folder = DriveApp.getFolderById(folderID);
    var folders = folder.getFolders();  
    while(folders.hasNext()) {
      var file = folders.next();
      if (new Date() - file.getDateCreated() > days * 24 * 60 * 60 * 1000) {
        //ゴミ箱に(ファイル完全削除ではない)
        file.setTrashed(true);
      }
    }
  //ゴミ箱を完全に空にする(Drive API)
  /*https://qiita.com/TakashiHamada/items/d932b1c7ed991b575109*/
  Drive.Files.emptyTrash();

}

解説

motionEye OSは標準だと以下のようなフォルダでファイルを貯めていく。

  • motionEyeOSの設定で指定したパス
    • YYYY-MM-DD
    • YYYY-MM-DD

「motionEyeOSの設定で指定したパス」には、その日のファイル保存時に新規でフォルダが作成されていくので
対象パスの中にあるフォルダの作成日が所定の日数より古ければ
ゴミ箱に移動させるようにした。

上記のソースでは フォルダIDをブラウザURLから特定して
何日以上かをコード内に指定すりゃ良い。

〜2019/06/11追記〜
ここまでだとゴミ箱にファイルが残り続けて、
ドライブの容量がいっぱいになった後には追加保存ができなくなる。

なのでプロジェクトにAPIを紐づけして
APIからゴミ箱を削除できるように追加した。

環境

システム情報 バージョン
motionEye Version 0.37.1
Motion Version 4.0.1+git2a140fa
OS Version motionEyeOS 20171008
Google API REST API Drive v2

最後に

GoogleAppsScriptの設定方法はどこぞで探しておくんなまし。

参考記事

Google app script + REST API v2でファイルを完全削除またはゴミ箱を空にする
https://qiita.com/TakashiHamada/items/d932b1c7ed991b575109

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1