Power Automate のクラウドフローで SharePoint ライブラリのフォルダーを削除する方法を調べてみた

Power Automate
スポンサーリンク

ひょんなことから、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 要求のアクションも利用することはできますが、方法によっては、ごみ箱にも入らずに完全削除されてしまうので注意しましょう。

タイトルとURLをコピーしました