ひょんなことから、Power Automate のクラウドフローを利用して、SharePoint ライブラリに保存されたフォルダーを削除する方法を調べてみました。
というのも、Power Automate の SharePoint コネクタには、ファイルや項目(リストアイテム)の削除アクションはあるものの、フォルダーの削除アクションが用意されていないからです。さてどうしたものかと、調べてみた結果を書き残しておきます。
たしかに「フォルダーの削除」アクションは存在しない
あらためて確認してみても、SharePoint コネクタのアクションには「フォルダーの削除」のようなアクションはありません。
さて、どうやってフォルダーを削除したら良いんだろう?
方法1)「項目の削除」アクションを利用する
え?と思うかもしれませんが、「項目の削除」アクションでライブラリのフォルダーを削除することができます。項目の削除アクションの設定に必要な値は、ライブラリ名と削除したいフォルダーの ID です。フォルダーの ID は、事前に「フォルダー メタデータの取得」アクションなどで取得しておきましょう。
項目の削除アクションでは、「リスト名」の設定にカスタム値としてライブラリの名前を直打ちして指定し、「ID」の設定には事前に「フォルダー メタデータの取得」アクションで取得しておいたフォルダーの「ItemId」を指定します。この ItemId は、ライブラリ内でユニークな連番(1, 2, 3, 4, 5…)で自動付与される数値です。
このフローが実行されると、ライブラリ内の指定したフォルダーがサイトのごみ箱に移動します。
方法2)HTTP 要求アクションを利用する
SharePoint 上で行うことができる基本的な操作の大半は、「SharePoint に HTTP 要求を送信します」アクションで実行することができます。ただし、SharePoint REST API の知識が必要になるのが難点ですね。
方法 1 と同様に「ItemId」の値を利用してフォルダーを削除するには、次のよう設定します。最後に /recycle()
と指定するのがポイントです。
設定項目 | 設定例 |
---|---|
サイトのアドレス | 削除したいフォルダーがあるサイトを指定 |
方法 | POST |
URI | _api/web/lists/getByTitle(‘<ライブラリ名>’)/items(<ItemId>)/recycle() |
ほかにも、フォルダーのパスを指定して削除する方法もあります。こちらも同様に最後に /recycle()
を指定します。
設定項目 | 設定例 |
---|---|
サイトのアドレス | 削除したいフォルダーがあるサイトを指定 |
方法 | POST |
URI | _api/web/lists/getFolderByServerRelativeUrl(‘<フォルダーを示すパス’)/recycle() |
こちらの方法でも、指定したフォルダーがサイトのごみ箱に移動します。
注意)DELET メソッドを利用すると完全に削除される
SharePoint REST API を利用してファイルを削除する方法として、DELET メソッド(方法)を利用することもできます。ただしこの場合は、フォルダーはごみ箱を経由せず完全に削除されてしまいます。完全に削除されたものは、取り返しがつかないので十分に注意しましょう。
設定項目 | 設定例 |
---|---|
サイトのアドレス | 削除したいフォルダーがあるサイトを指定 |
方法 | DELETE |
URI | _api/web/lists/getFolderByServerRelativeUrl(‘<フォルダーを示すパス’) |
さいごに
そんなわけで、Power Automate のクラウドフローを用いて、SharePoint のライブラリに作成されたフォルダーを削除する方法を調べてみました。「項目の削除」アクションを利用してフォルダーを削除できるのは、なかなか興味深かったですね。HTTP 要求のアクションも利用することはできますが、方法によっては、ごみ箱にも入らずに完全削除されてしまうので注意しましょう。