Power Automateのフローを複数のリストで再利用するテクニック

# はじめに
Power Automateのフロー（以降はフローと記載）を複数のリストで再利用するテクニックとして、以下の2種類を組み合わせたフローの作成方法と流用方法を紹介します。※1

・変数を使用したフロー
・SharePoint Online （以降はSharePoint と記載）アイテム更新フロー


※1 2022/2/1時点の製品仕様を基に記述します。

# 対象読者 
SharePointとPower Automateについて、以下を理解している前提で記載しています。

・SharePoint
　・カスタムリストの作成方法
　・カスタムリストのリストと列内部名

・Power Automate
　・フローの組み立て方 

# 1.フローで変数を使うメリット 
SharePointのアイテム更新フローで変数を使うと、同じようなフローを作成する際に工数及びミスを削減できます。ここでは、変数無しフローと変数有りフローの流用時の違いを記載します。

1.1   変数無しフローの流用
フローを作成する際、アクションのパラメータ設定が必要です。作成したフローを流用する場合は、作成済みのフローをコピーし、コピーしたフロー内のパラメータを修正する必要があります。

通常、SharePoint関連のアクションでは、カスタムリスト情報（リストURLやリスト名）を直接パラメータ設定する必要があります。そのため、フローを流用した際は以下の図のように直接パラメータ設定した箇所全てを修正する必要があります。
![変数無しフロー流用例.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/fe3cfe00-8f03-3811-45c5-ebcd50512aca.png)


1.2	変数有りフローの流用
変数を使用したフローを流用した場合を想定します。以下の図のように各アクションは変数のパラメータを参照するため、設定した変数のパラメータを変更するのみとなります。そのため、大幅にパラメータ変更箇所を減らすと同時に、変更数の多さによるミスを減らすことが可能となります。
![変数有りフロー流用例.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/2d241376-a3fb-506a-f690-01c1bd3f39b3.png)


# 2.変数を使ったフローの作成
変数を使用したSharePointアイテム更新フロー作成手順を紹介します。ここでは、カスタムリストとフローを用意します。本フローはカスタムリストのアイテムが作成/更新された時、「テスト列」列の値を空欄から「テスト」の文字列に変更します。
![サンプルリスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/c34de89a-69ba-bee0-b28f-d086d35ba850.png)


2.1	カスタムリストの作成
以下のようなカスタムリストを作成します。

|No.|項目名<br>（表示名）|内部名 ※2|種類|列の種類|備考| 
|---|---|---|---|---|---| 
|1|テストリスト|TestList|カスタムリスト|－|カスタムリストを作成したサイトのアドレスは以下と仮定します。<br>URL：https://○○/sites/▲▲| 
|2|タイトル|Title|列|1行テキスト列|本列は既存列です。| 
|3|テスト列|TestCol|列|1行テキスト列|－| 

※2 半角英数字（記号を含まない）のみの名前にします。 

2.2	変数で設定したフローを作成
以下のようなフローを作成します。
![全体画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/4e80c9a6-fc04-a7f4-b0fe-b1e4d92396e2.png)


1）「アイテムが作成または変更されたとき」トリガー
トリガーを作成します。本トリガーはカスタムリストでアイテムの新規作成/更新が行われたかを検知します。
![トリガー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/1074cc15-e3da-d52d-67f3-3692f8132391.png)

2）「変数を初期化する」アクション
「サイトのアドレス」、「カスタムリスト表示名」、「カスタムリスト内部名」を設定した変数を作成します。
![変数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/86eb663b-409c-8b1f-54f2-fe96d44edb65.png)


3）「条件」アクション
アイテムの更新可否を決める条件分岐を作成します。以下の設定により、本フローのアイテムの更新が1度しか動作しません。そのため、無限ループを避けることができます。
![条件分岐.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/22b89e6b-8a59-fa99-c4fb-8c8cadccf52b.png)


4）「SharePoint に HTTP 要求を送信します」アクション
「条件」アクションの「はい」アクション内に、アイテムの更新を行うアクションを作成します。

|No.|大項目|小項目|パラメータ ※3| 
|---|---|---|---| 
|1.0|サイトのアドレス|－|「サイトのアドレス変数」| 
|2.0|方法|－|POST| 
|3.0|URI|－|_api/web/lists/GetByTitle('「カスタムリスト表示名変数」')/Items('「アイテムが作成または変更されたときトリガーの対象アイテムID」')| 
|4.1|ヘッダー|Accept|application/json; odata=verbose| 
|4.2|ヘッダー|Content-Type|application/json; odata=verbose| 
|4.3|ヘッダー|X-HTTP-Method|MERGE| 
|4.4|ヘッダー|IF-MATCH|*| 
|5.0|ボディ|－|{"__metadata":{"type":"SP.Data.「カスタムリスト内部名変数」ListItem"},"TestCol":"テスト"}| 

※3 エンターキーなどの改行コードは入れないようにしてください。

![HTTP要求アクション.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/d22ed4b8-8694-491f-7241-c4782d97b04a.jpeg)


変数の入力は、アクション内の枠をクリック後、表示されるダイアログから変数を選択することで可能です。
![変数登録方法_赤枠付き.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/c0ab1b63-c95d-9e35-7cde-b473819a9fc6.png)


以上により、カスタムリストとフローは完成となります。 

#  3.フローの流用 
「2. 変数を使ったフローの作成」で作成したフロー流用手順を紹介します。

3.1.	フローの流用先カスタムリストの用意
フローの流用先カスタムリスト（以降、流用先カスタムリスト）を用意します。
|No.|項目名<br>（表示名）|内部名 ※4|種類|列の種類|備考| 
|---|---|---|---|---|---| 
|1|テストリスト2<br>※5|TestList2 ※5|カスタムリスト|－|流用先カスタムリストを作成したサイトURLは以下と仮定します。<br>URL：https://●●/sites/■■| 
|2|タイトル<br>※5|Title|列|1行テキスト列|本列は既存列です。| 
|3|テスト列2<br>※5|TestCol|列|1行テキスト列|－| 

※4 半角英数字（記号を含まない）のみの名前にします。 
※5 値の変更が可能です。

![流用先リスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/5eca3813-a0d1-608b-fab0-3f55949de742.png)


3.2.	フローの流用
作成したフローをコピーし、コピーしたフローのパラメータを変更します。

1）フローのコピー
フロー詳細 > 「名前を付けて保存」> 「このフローのコピーを作成する」ダイアログを開きます。
![フロー詳細画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/03c69f62-936e-3ca1-2f53-b6f1d2ffd9a3.png)


「このフローのコピーを作成する」ダイアログでフロー名を登録し、「保存」ボタンをクリックします。
![コピーフロー名.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/ed3f2701-a7a0-b9de-0284-b09fe024c298.png)

2）フローのパラメータ変更
コピーしたフロー内の各パラメータを変更します。変更が必要なアクションは「アイテムが作成または変更されたとき」トリガーと、「変数を初期化する」アクションとなります。各アクションのステータスは、流用先カスタムリスト情報を基に変更します。
![コピーフロー変更箇所.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2634425/ded602be-0eec-b526-0b01-59f56363d20e.png)


今回作成したフローの場合、流用時に変更するパラメータの数は変数を使用しないフローと同じ5箇所となります。ただし、「SharePoint に HTTP 要求を送信します」アクションが4つに増えた場合、変数を使用しないフローは14箇所もパラメータを変更する必要がありますが、変数を使用したフローは5箇所のみとなります。

# まとめ
Power AutomateとSharePointの連携機能はよく知られていますが、フローを流用前提としたフロー作成方法の記事は少ない印象です。変数を使うことで効率的なフロー作成の手助けになれば幸いです。