【Power Automate】目的別フロー共有方法

# 記事概要
Microsoft Power Automateは、他のユーザーにフローを共有するための方法が複数存在する。本記事では下記2点の観点をベースに、目的に応じた共有方法を紹介する。
・誰に(組織内/外)
・どの権限を付与するか

※本記事において、「組織内のユーザー」とは、共有元ユーザーと共通のMicrosoft 365テナントを利用しており、かつPower Automate for Office 365ライセンスを有するユーザーのことを指す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/9ef9aa6e-ad8a-ddd5-2b23-e718b99d5421.png)
フローの画面上部にはいろいろなメニューがあるけど、「フローをわけわけするためにはどうしたらいいの？」を整理する為にご覧いただければ幸いです。

# 本記事で利用するライセンス
本記事では、共有元のユーザー、共有先のユーザーともにPower Automate for Office 365を利用する。

# 組織内のユーザーと共同してフローを編集する
## 方法
「所有者」に当該ユーザーを追加する
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/90d8fc63-19d3-0d60-4e11-4a27f9d64d8c.png" width=50%>

## くわしく
・当該ユーザーは共同の管理者として、編集・更新・削除が可能となる。
・現状、PowerAutomate管理コネクタやPowerShellを利用して削除したフローを復元することは可能(削除後28日以内)だが、過去のバージョンに戻すことは不可能。編集権限を付与したくない場合は後述の「組織内のユーザーに実行権限だけ付与する」で対応する。

# 組織内のユーザーに実行権限だけ付与する
## 方法
「実行のみのユーザー」に当該ユーザーを追加する
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/7865153b-9118-39c8-9a6b-137ecd7fbbb4.png" width=50%>

## くわしく
・「実行のみのユーザー」に追加すると、当該ユーザーはフローの実行のみ可能になり、フローの編集はできない。
・組織内の業務フローを幅広く展開する場合に利用する。

# 組織内のユーザーにガワだけ共有する
## 方法
コピーの送信

## くわしく
・組織内のユーザーにテンプレートとしてフローを送信する。共有先のユーザーにはメールでフローが送信され、共有元とは別のインスタンスとしてフローを作成できる。作成されたフローの所有者は共有先のユーザーとなる。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/078a05d5-7439-4cb5-f32b-0d7af9d43ac3.png" width=50%>

・認証情報含め、フローにメールアドレスが含まれていると共有はブロックされる。変数処理のロジックを共有する等用途は限定的になる。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/a7d44b8a-dd74-0087-c6ec-60ad34937ab8.png" width=50%>

・「コピーの送信」が組織内のユーザーのメールアドレスを指定してテンプレートとして送信するのに対し、「テンプレートとして送信する」はMicrosoftにフローを送信してテンプレートギャラリーに追加を依頼する。共有範囲が異なる点について注意。

https://docs.microsoft.com/ja-jp/power-automate/publish-a-template

# 別の環境に共有する
## 方法
エクスポート→パッケージ(.zip)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/73900339-fc0d-e6c1-22db-7dae72455332.png" width=50%>

## くわしく
・フローをzipファイルとして作成する。検証環境で作成したフローを本番環境に展開する、他社環境に作成したフローを共有する場合などに利用する。インポートされたフローの所有者は共有先のユーザーとなる。
・認証情報やステップ内のプロパティを環境に合わせて編集する必要がある。

# 比較表
|  共有方法 |  対象  |  フローのインスタンス  |  共有先ユーザーの権限  |
| ---- | ---- | ---- | ---- |
|  所有者 |  組織内  |  共有元と同一  |  実行、編集、更新、削除  |
|  実行のみのユーザー  |  組織内  |  共有元と同一  |  実行  |
|  コピーの送信  |  組織内  |  共有元と別  |  実行、編集、更新、削除  |
|  エクスポート  |  組織外  |   共有元と別  |  実行、編集、更新、削除  |

# 共有にあたっての留意事項
## 個人情報の取り扱い
「コピーを送信」はフローに個人情報が含まれていると共有がブロックされる仕組みになっているが、「エクスポート」については**インポート時に各リソースの認証用のメールアドレスが表示される。** 認証が必要なフローで、かつ個人情報を知られたくない場合(不特定多数のユーザーに配布することを想定している等)はMicrosoftにテンプレートとして送信する等別のアプローチを考える必要がある。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/8b3ae41f-7543-02b0-9f5a-2efa342ec6ee.png"  width=50%>

## フローの実行数の確認
### ライセンスの上限
Power Platformは実行数に制限がある。
https://docs.microsoft.com/ja-jp/power-platform/admin/api-request-limits-allocations
本記事で利用しているPower Automate for Office 365ライセンス（上記Docsの「
Power Apps 従量課金制プラン、およびアプリごとの Power Apps、Power Platform アクセスを持つ Microsoft 365 アプリ、および Dynamics 365 Team Member 2 の有料ライセンスユーザー」に該当)は、ユーザーが1日あたりに使用できるAPI要求は**6000回**である。

### API要求のカウント方法とカウント対象ユーザー
API要求は1ステップをAPI要求1とカウントしている。
また、フローのはじまりが**プッシュトリガー**(ユーザーが手動で開始するトリガー)の場合はフローを実行したユーザーの実行として、**ポーリングトリガー**(スケジュールやフラグで自動で開始するトリガー)は所有者の実行としてカウントされる。

### API要求数の見積
フローを共有する前に「フローのステップ数×1日に実行が想定される回数」でAPI要求数を見積り、他のフローと合わせて制限に達しないか確認する必要がある。また、ボタンフローなどユーザーが気軽に実行できるフローについては、テスト目的の実行を控えるよう共有先にアナウンスすると良い。

## フローに説明、ステップにコメントを追加する
フローを共有する時、機能や前提条件をフローの説明で記載しよう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/fcc21f33-3ee0-a8c6-c2fd-29552b1b5755.png" width=50%>

また、各ステップの右上の「…」からコメントを追加できる。処理のロジックの説明やユーザー操作で編集してほしいプロパティなど、コメントで説明しよう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/338126/477f0bee-eefd-93de-4e86-82d9fe0ce003.png" width=50%>

# 参考文献
[フローを共有する](https://docs.microsoft.com/ja-jp/power-automate/create-team-flows)
[要求の制限と割り当て](https://docs.microsoft.com/ja-jp/power-platform/admin/api-request-limits-allocations)