ひつじエンジニアのPowerPlatform備忘録

エンジニアの備忘録的ブログです。

【PowerAutomate】SharePointリストの添付ファイル列のファイルをライブラリに保存する方法

方法

PowerAutomateのフローからSharePointリストアイテムの添付ファイル列のファイルを取得し、ドキュメントライブラリへ保存する方法を記載する。

STEP1:PowerAutomateフローを作成

今回はPowerAppsでカスタマイズしたSharePointリストフォームから呼び出すフローを作成します。他のものでもよいのですが、ここでは「インスタントクラウドフローを構築する」>「PowerApps(V2)」トリガーからフローを作成します。

フローの編集画面を開き、「PowerApps(V2)」トリガーをクリックし、「入力の追加」>「数」の順にクリックして引数に数値型の項目を追加する。
左側の入力欄に引数名を[ID]と指定する。(ここにリストアイテムのIDを指定する)


「添付ファイルの取得」アクションを追加し、下記のようにプロパティを設定する。

[サイトのアドレス]:対象のサイト
[リスト名]:呼び出し元の対象リスト
[ID]:「PowerApps(V2)」トリガーの引数ID

※このアクションでは添付ファイル列の一覧が取得できるイメージで、ファイルのコンテンツ自体は取得されない。

 

「添付ファイルのコンテンツの取得」アクションを追加し、下記のようにプロパティを設定する。

[サイトのアドレス]:対象のサイト
[リスト名]:呼び出し元の対象リスト
[ID]:「PowerApps(V2)」トリガーの引数ID
[ファイル識別子]:前述の「添付ファイルの取得」アクションのIdを指定する。
※Idを指定すると自動でApplyToEachの中にアクションが配置され、添付ファイルの数だけループするように構成され、全ての添付ファイルに対しコンテンツの取得処理が行われるようになる。



ApplyToEachの中の「添付ファイルのコンテンツの取得」アクションの下に「ファイルの作成」アクションを追加し、下記のようにプロパティを設定する。

[サイトのアドレス]:対象のサイトを設定する。
[フォルダーのパス]:保存先のパスを指定する。(ここではtestLibというライブラリの
           ルートを指定している)
[ファイル名]:「添付ファイルの取得」アクションの「DisplayName」

[ファイルコンテンツ]:「添付ファイルのコンテンツの取得」アクションの
            「添付ファイルのコンテンツ」


フローの全体像は下の図のようになります。



STEP2:PowerAppsでカスタマイズしたSharepointリストフォームから呼び出す

PowerApps編集画面の左側の「Powerautomateアイコン」>「フローの追加」からSTEP1で作成したフローを追加します。

下記のように記述することでSTEP1で作ったフローを呼び出せます。

添付ファイル保存フロー.Run( リストアイテムのID )

※下記の例では、リストアイテムを更新した際に実行されるSharePointFormの[OnSuccess]プロパティで呼び出すことで、アイテムの作成、更新時に対象のリストアイテムの添付ファイルがライブラリへ保存されるようにしています。

 

おわりに

すべて標準のアクションのみで完結することができました。
添付ファイル列のファイルをライブラリへ保存する場面に出くわしたら参考にして頂ければ幸いです。