【GAS】Googleドライブのフォルダ変更を検知して通知する

Google Apps Script

指定したフォルダIDの更新を検知し、メールで通知してくれるツールを作ってみました。

ツールについて

GASスタンドで販売中です。

Goolgeドライブのフォルダ更新通知ツール | GASスタンド
Goolgeドライブのフォルダ更新通知ツール 概要 指定したフォルダIDの更新を検知し、メールで通知してくれるツールです。 ネットで検索すると、このようなフォルダ更新のサンプルコードはたくさん見つけられると思いますが、 その多くが、「フォルダ自身の最終更新日」が変更されたときに通知されるものでした。 しかしながら、Go...

ネットで検索すると、このようなフォルダ更新のサンプルコードはたくさん見つけられると思いますが、
その多くが、「フォルダ自身の最終更新日」が変更されたときに通知されるものでした。

しかしながら、Googleドライブでは、そのフォルダの中で何が行われようと、「フォルダ自身の最終更新日」は更新されません。
フォルダ自身の最終更新日が更新されるのは、フォルダ名を変える、などといった、フォルダ自身に対する操作を行なった時のみになります。

このツールは、フォルダ自身の最終更新日ではなく、フォルダ内の全てのファイルとフォルダの更新を監視することで、
フォルダの中で行われる全ての更新を検知することができるようにしております。
また、更新を知らせるメールの通知先やメール本文など、きめ細やかな設定を行うことも可能です。

検知処理の実装

検知処理自体は以下のようなロジックで行います。

function getLastUpdateSum(folder) {
  let updatedTimeSum = 0;
  const files = folder.getFiles();
  while(files.hasNext()) {
    const file = files.next();
    updatedTimeSum += file.getLastUpdated().getTime();
  }

  const subFolders = folder.getFolders();
  while(subFolders.hasNext()) {
    const subFolder = subFolders.next();
    updatedTimeSum += subFolder.getLastUpdated().getTime();
    updatedTimeSum += getLastUpdateSum(subFolder);
  }
  return updatedTimeSum;
}

引数で指定したフォルダの中身の更新日付をミリ秒に変換して、それを全て足し合わせています。
それを実現するために、途中で再帰処理も含んでいます。

ここで足し合わせた値をスクリプトプロパティなんかに保存しておき、比較することで、ファイル変更があったかどうかを判別しています。

終わりに

より実用的なフォルダ変更検知の紹介でした。
もしよければ買ってください(宣伝)

Goolgeドライブのフォルダ更新通知ツール | GASスタンド
Goolgeドライブのフォルダ更新通知ツール 概要 指定したフォルダIDの更新を検知し、メールで通知してくれるツールです。 ネットで検索すると、このようなフォルダ更新のサンプルコードはたくさん見つけられると思いますが、 その多くが、「フォルダ自身の最終更新日」が変更されたときに通知されるものでした。 しかしながら、Go...
タイトルとURLをコピーしました