Power AutomateからSharePointのフォルダを削除する方法をメモ。
やりたいこと
今回はSharePointのドキュメントライブラリにあるフォルダをPower Automateから削除する。


フォルダの中にファイルを入れておく。


フォルダの削除はHTTPリクエストで行う
Power AutomateのSharePoint標準アクションにはフォルダの削除は含まれていない。
そこで、フォルダの削除はGraph API(HTTPリクエスト)経由で行う。


ごみ箱へ移動
まずはゴミ箱に移動する削除。メソッドに「DELETE」を使用し、GetFolderByServerRelativeUrlを呼び出す。


// メソッド DELETE // URI _api/web/GetFolderByServerRelativeUrl('/sites/【サイト名】/【ライブラリ名】/【フォルダ名】')/recycle()
このフローが成功すると、


フォルダがドキュメントライブラリからごみ箱へ移動する。




ちなみにフォルダを復元すると、中のファイルも復元する。




完全削除
続いて完全削除。完全に削除するときは、先ほどのURIから「/recycle()」をなくすだけ。


// メソッド DELETE // URI _api/web/GetFolderByServerRelativeUrl('/sites/【サイト名】/【ライブラリ名】/【フォルダ名】')
このフローが成功すると、


フォルダも中のファイルもゴミ箱へ移動せずに、削除される。




おまけ:「フォルダの一覧」アクションで取得した全フォルダを削除しようとするとエラーが起きる
ドキュメントライブラリに複数フォルダがあり、


これらを「フォルダーの一覧」アクションで取得し、


先ほどの方法でまとめて削除しようとすると、


フローが終了せず、失敗となる。これは「フォルダの一覧」アクションで取得したフォルダの中にはシステムフォルダ「Forms」が含まれるため。


最も単純な解決方法は、システムフォルダの名称が「Forms」や「_catalogs」「_layouts」など決まっているので、アレイのフィルター処理で除去するだけ。
※基本はFormsのみでOK

※基本はFormsのみでOK

これで実行すると無事フローは成功し、


フォルダはすべて削除される。


コメント