定期バックアップしたSharePointのファイルを世代管理する
解決できる課題
ファイルをバックアップした後、バックアップファイルが膨大に増えていませんか? ・バックアップファイルが多すぎて、どれが最新のものかわかりづらい ・バックアップ用フォルダのサイズが大きくなってしまう ・SharePointの世代管理がうまくできない ・一週間のバックアップだけあれば十分 Power Automateを使えば、バックアップの世代管理も簡単に実現可能です。
完成イメージ

必要なもの
SharePoint コネクタ
データ操作 コネクタ
作り方
定期的なバックアップは万一に備えて必要ですが、バックアップしたファイルを管理しないと、運用に悪影響です。
特に世代管理は、必要な分だけを定期的に保持するので有効です。
※基本的なバックアップフローはSharePointファイルの定期バックアップをご参考ください
- 1. トリガー「スケジュール済みクラウドフロー」を設定
世代管理の周期に合わせて設定します。
日次の場合、[間隔]と[頻度]は「1」と「日」にします。
これにより、毎日実行し、日ごとに世代管理を行います。
[開始時間]は「2026-03-14T15:01:00.000Z」(2026年3月15日 0時01分)などにします。
※画像は省略、SharePointファイルの定期バックアップを参考
- 2. アクション「過去の時間の取得」を設定
バックアップの周期に合わせ、[間隔]と[時間単位]を設定します。
例えば、7日間分を保持する場合、「7」と「日」にします。
※3/14に実行する場合、3/7の日付を取得する(3/7以前のものを削除対象とし、3/8-13を保持する)

- 3. アクション「ファイルの取得 (プロパティのみ)」を設定
バックアップ済みのファイル情報を取得します。
[サイトのアドレス]は、バックアップフォルダのあるサイトを選択します。
フォルダの指定は、詳細パラメーター内にある[エントリをフォルダーに制限する]を選択します。

- 4. アクション「アレイのフィルター処理」を設定
ステップ3で取得したファイル情報の一覧から、条件でフィルタリングします。
[From]は「body/value」にします。
[Filter Query]は、「Created」が「過去の時間」と比べて「より小さい」にします。

- 5. 「For each」を設定
ステップ6にあるファイル削除のアクションで「ID」(ファイルの取得 (プロパティのみ))を設定すると、Foreachは自動的に追加されますが、このレシピでは異なります。
手動でForeachを追加します。
※Foreachの繰り返し処理は、ステップ3の取得値ではなく、ステップ4の取得値のため(後述)
[前のステップから出力を選択します]には、アレイのフィルター処理の「body」を設定します。

- 6. アクション「ファイルの削除」を設定
[サイトのアドレス]はステップ3で設定したものと同じにします。
[ファイル識別子]は「現在の項目」(For each)にします。

- 5. バックアップファイルの作成処理
ここは、SharePointファイルの定期バックアップレシピをご参考ください。
「ファイル メタデータの取得」から「ファイルの作成」までのフローは同じです。
- 6. 動作確認
バックアップの世代管理をしていないと、下図のように古いものがたまりがちです。

フローを実行後、7日前よりも古いもの(3/14時点の場合、3/7以前のもの)を一括削除し、3/14分のバックアップを作成します。

- 7. やらない方が良いこと
下図は推奨しないフロー図です。

下記は、ステップ5とステップ6に関する内容です。
ステップ6にあるファイル削除のアクションで「ID」(ファイルの取得 (プロパティのみ))を設定すると、Foreachは自動的に追加されますが、このレシピでは異なります。
手動でForeachを追加します。
※Foreachの繰り返し処理は、ステップ3の取得値ではなく、ステップ4の取得値のため
この非推奨のフローは、「ID」(ファイルの取得 (プロパティのみ))を指定してforeach処理を作り、foreach内で日付判定のifを追加したものです。
※この場合、ステップ4のアレイのフィルター処理は不要になる
foreach内のif処理は、取得した全てのファイルに対して日付判定を行うため、効率的ではありません。
それよりも、アレイフィルターを使い、あらかじめ日付判定を行った配列を使う方がスマートです。
※「取得した全てのファイル数 > 日付判定済みの絞ったファイル数」になるため

