定期的にフォルダ内のファイルを削除する方法
動画でも解説しています。作成開始
PowerAutomateのサイトで「作成」➤「スケジュール済みクラウドフロー」を選択します。
フロー名と開始日・繰り返し間隔を設定し、作成をクリックします。
トリガーの設定
Recurrenceというトリガーが設定されたフロー編集画面になります。
初めに設定した内容で作成されていますが、時間は世界標準時に変わっています。
タイムゾーンの設定を+9時間の「大阪・札幌・東京」に設定して、開始日時を設定します。
このままだと、開始された日時から○○毎に実行されますので、決まった時間に動作させたい場合は「At These Hours」(時)と「At These Minutes」(分)を設定します。
下のプレビューで実行される頻度と時間が分かるので、こちらを確認しながら設定すると良いでしょう。
フォルダーの一覧アクションの追加
Recurrenceの下にアクションを追加します。
今回はSharePointのフォルダ内を対象とします。
「アクションの追加」➤「SharePoint」➤「フォルダーの一覧」を選択します。
設定で「サイトのアドレス」に「SharePointサイトのアドレス」。「ファイル識別子」に「対象となるフォルダ」を設定します。
これで、対象フォルダ内に保存されたフォルダとファイルの一覧を取得することができます。
ファイルの削除アクションの追加
「アクションの追加」➤「Sharepoint」➤「ファイルの削除」を選択します。
設定で「サイトのアドレス」にさきほどと同じく「SharePointサイトのアドレス」を設定。
「ファイル識別子」には、⚡から動的なコンテンツの「フォルダーの一覧」の中の「Id」を選択します。
フローを確認すると、自動的に「For each」(繰り返し)アクションが追加されています。
これでフォルダ内のファイルを全て繰り返し処理してくれます。
定期的に削除するだけならこれで完成
指定したフォルダ内のファイルを定期的に削除するフローはこれで完成です。
保存してテストしてみると、フォルダ内のファイルが削除されていいると思います。
今後はフローをオンにしておけば、このフォルダ内のファイルは指定した時間に削除されます。
更新日時が古いファイルだけ削除したい
例えば、自動保存されるファイルがあって、1か月は残しておきたいけど、それ以上古いファイルは削除したい。ということがあると思います。
条件アクションの追加
先ほどの「ファイルの削除」アクションの前(For eachの中)に、「アクションの追加」➤「組み込み」➤「Control」➤「条件」で、「条件」アクションを追加します。
設定で、左の値に⚡から「フォルダーの一覧」の中の「LastModified」(最終更新日時)を選択します。
真ん中は論理式となりますので、「is less than」(より小さい)を選択します。
右クリックして「日本語に翻訳」すると、どれを選んだらいいか分かりやすくなりますが、式も微妙に日本語化されてしまいますので、一時的な確認のみに留めてください。
addDays(utcNow(),-30)
utcNow関数で取得した現在日時に、addDays関数で‐30することで、30日前の日時を取得することができます。
これで、最終更新日時が30日前の日時より前なら、TrueそうでなければFalseという「条件」の設定ができました。
これで、Sharepointの指定したフォルダ内のファイルで更新日時が古いものを定期的に削除するフローが完成しました。
最後に、「ファイルの削除」アクションを「条件」の「True」に入れてください。
最終更新日時について
1点注意なのですが、SharePoint上で表示される「更新日時」とPowerAutomateで取得される「LastModified」は共にファイルの最終更新日時を表示するのですが、厳密には違いがあります。
たとえば、ファイルを別のフォルダに移動した場合、SharePointでは「更新日時」は変わりありませんが、PowerAutomateで取得したファイルの「LastModified」は、移動した日時になります。
古いファイルと新しいファイルが混在するフォルダの名前を変更すると、内部のファイルの「LastModified」も変更した日時になりますが、SharePoint上の「更新日時」はそのままとなります。
SharePointの更新日時はあくまでファイルの編集日時だと考えると良いかもしれません。
以上