【ワンランク上のPower Apps 開発】Tips – PowerAppsV2トリガーのすすめ

Power Apps Power Automate 技術ブログ

はじめに

こんにちは。西村です。今回はPower Apps、Power Automate関連の技術Tipsの投稿となります。
Power AppsからAutomateを実行する際に使用する「PowerAppsトリガー」ですが、2021年の夏ごろからは「PowerAppsV2トリガー」が使えるようになっています。
パラメータ定義が簡単、ファイルも変換せず連携出来るなど、以前に比べて扱いやすくなっているのですが、重要なポイントがあまりフューチャーされていない気がしたので、ブログにしようと思いました。
それは、「V2トリガーでは実行時に使う接続を指定することが出来る」という点です。
要はフロー内のアクションを作成者として操作できるイメージです。この点を活用すると以下のような設計が出来ます。

  • 管理者操作(SPOリストアイテムの権限変更など)が同期的に出来る
  • データソース(SPOリストやファイルなど)に投稿するアクセス権がなくても管理者として操作が出来る
  • その他、作成者として行いたい各アクションの実行

この点について、従来との違いや調整箇所、使い道など解説していこうと思います。

従来版トリガーとの違い

まず、従来のPowerAppsトリガーの場合ですが、パラメータの定義方法などが他のインスタントフロー(手動トリガーやSPO選択したアイテムの場合など)と違い、少し扱いづらい仕様でした。※トリガーに定義はせずアクションで使用すると自動作成され、名前変更不可、うまく消せないなどの挙動がある。今もですが
この点が、V2トリガーでは他のインスタントフロー同様の仕様となり解消されています。

PowerAppsトリガー(従来版)
パラメータは後続手順で追加すると自動追加される。名前変更できないなど扱いづらい
PowerAppsV2トリガー
他のインスタントフロー同様にパラメータ、型、必須・任意などの定義が可能で使いやすい

このあたりはMVPのHiroさんがブログで分かりやすく説明されています。
新しくなった Power Apps トリガーの変更点について – MoreBeerMorePower (hatenablog.com)

V2トリガーでは使用する接続を指定できる!

今回取り上げたいのは、「V2トリガーでは実行時に使う接続を指定することが出来る」という点です。
従来版トリガーの場合、実行時に使用される接続は、アプリの実行ユーザー(アプリ操作者)の接続が強制的に使われる仕様となっております。そのため、フロー内でSPO、ExcelOnlineやOutlookなどの各種アクションを実行する場合、実行ユーザーが各データソースなどに対して適切なアクセス権を持っている必要があります。そうでない場合はエラーとなるため、作ったアプリが作成者では動くがユーザーではエラーとなり使えない。というようなことが起きます。

PowerAppsV2トリガーでは、フローの詳細画面で「作成者の接続」 OR 「実行ユーザーの接続」 のどちらを使うかを選択が出来ます。※既定は実行ユーザーの接続になっています。
この部分は他のインスタントフローは従来から可能でしたが、従来のPowerAppsトリガーではその設定がなかったのです。(設定画面自体が表示されない)

V2トリガー フロー設定画面 実行のみのユーザー設定画面
★この設定画面自体が従来のPowerAppsトリガーにはない

V2トリガー での実行のみアクセス権限設定および、使用する接続の設定画面

プルダウンで作成者(または作成者が使える接続)または、実行ユーザーの接続を使うかを選択できる

上記の通り、PowerAppsV2トリガーでは実行時の接続を選択できます。
また、SPOは作成者の接続、ExcelOnlineや承認アクションは実行ユーザーの接続とする。など、接続の単位ごとに変更ができます。

ちなみにアプリから接続しているフローは、アプリを共有すればフローは自動的に「実行のみのユーザーとしての共有」がされるので、この画面でアクセス権を付けてあげる必要はありません。

用途①:管理者操作(SPOリストアイテムの権限変更など)が同期的に出来る

実際にどういった場合でうれしいのか?という点ですが、個人的にはこれが一番かな。と思ってます。
ケース:SPOリストへアプリからアイテムを登録し、アイテム単位の権限設定をしたい(作成したユーザーと承認者、管理者のみが編集可能とするなど)※1
こういったケースですが、SPOアイテムの権限変更の操作を行うには、SPOリストに対して権限変更が可能な強い権限を持っている必要があります。
従来版のトリガーではアプリから呼び出すフローは実行ユーザーの接続 (=ユーザーのSPOリストに対するアクセス権限)で動きます。通常、一般ユーザーにはそのような強い権限は与えないので、この実装では、ユーザーが操作した場合はエラーとなりますので、出来ないとなります。

解決策としては、SPOの「アイテムが作成されたときトリガー」(自動トリガー)で別のフローを作成し、アイテムが作成された後に、そのフローで権限変更の操作を行うというのが一般的です。※自動トリガーは作成者の接続で動作します。
ただしこの設計の場合は同期的な実装ではないため、タイムラグが生じるというネックがあります。
※SPO自動トリガーはポーリング間隔での実行となり、M365ライセンス範囲のフローの場合は、最長5分(平均で2,3分)のタイムラグが生じます。※有償ライセンスの場合は1分で済みます
そのため、処理が実行されるまでは他の人にも見えてしまうためアプリ側でも調整するなどの考慮が必要ですし、そもそもタイムラグが許容されないようなケースもあります。

PowerAppsV2トリガーを使った場合は、(SPOに管理者権限のある)作成者の接続を使う。とすれば、アプリの実行ユーザーに強い権限がなくても、アプリボタンから呼び出すフローから権限の変更操作が同期的に出来るようになります。

※1 :SPOリストのアイテム単位の権限設定はそもそも大規模なリストでは推奨されてません。
上記は前提としてその点をクリアできる要件での設計となります。
SharePoint の制限 – Service Descriptions | Microsoft Docs

設計イメージとしては以下のような感じです。

SPOのアイテムの権限設定のアクション
強い権限が必要なので一般ユーザーではエラーとなる。使用する接続でリストに強い権限のある作成者の接続を指定すれば実行できる。

用途②:データソース(SPOリストやファイルなど)に投稿するアクセス権がなくても管理者として操作が出来る

①と近い内容ですが、フロー内で作成者の接続を使えば、作成者としての操作となるので、そもそもSPOリストやファイルなどに対して実行ユーザーに全く権限がない場合でも操作することが出来ます。
上記より、フローを介してアイテムを取得、更新しアプリ側に表示する設計・実装とすれば、アプリを操作するユーザーにSPOリストにアクセス権限を付けなくても扱えるシステムが構築出来ます。
※従来版トリガーの場合でも、子フローの実行を使って作成者として操作させる実装もできますが、ソリューション内でのみ利用可能な機能なため、組織によっては利用できないケースもあります

★ただしAPIコール数のカウント(M365ライセンスだと1日6000回まで)は接続に指定したユーザーに集中します(の認識です)
閲覧権限すら与えない場合は、データをアプリで表示させる部分もすべてフロー経由で取ってくる必要があるため、フローの同時実行制限やAPIコール数などの点で各閾値を超えてしまう可能性がありますし、そもそも実装が複雑(フローからのデータ返却部分など)であったり、他の面での制限が出てくる可能性もありますので、セキュアな実装が最優先、かつ、他の課題をクリアできる場合に限られるのかと思います。
通常の範囲では、閲覧権限までは付与しておき更新の部分のみフロー経由で作成者として行う。あたりまでが現実的な気がします。※合わせてリスト非表示とするなどで工夫する

その他の利用シーンとしては、ログを保存する管理者用のリスト(一般ユーザーにはアクセスさせたくないリスト)へのアイテム登録時や、一時的に利用するライブラリ(処理後はファイルを消すためユーザーに権限を付けたくない)などの場合にフロー経由で作成者として登録させる。などがあるかと思います。この場合一般ユーザーにはデータを表示させる必要もなく、出来れば権限を与えたくありませんのでマッチするかと思います。※タイムラグが影響なければSPO自動トリガーの実装でも問題はなし

①と②を併せたサンプル実装は以下のような感じです。
アイテム登録後にそのまま権限設定、および管理用のログリストへの登録(説明用の最低限の実装ですのでご容赦ください)

用途③:その他、作成者として行いたい各アクションの実行

その他は、Outlookのメール送信やTeams投稿、承認アクションなど各種アクションをあえて作成者として操作させたい場合などでしょうか。
例:共有メールボックスを使用してメール送信したいが、その共有メールボックス自体への権限を与えなければいけないため、作成者の接続で動作させるなど
前途したとおり、SPO、Outlook、ExcelOnlineなどコネクタ単位で使用する接続を変更できるため、SPOのみを作成者として実行するなどの調整も可能です。

その他留意点

・作成者の接続を使う点で、SPOやExcelOnlineのライセンスがないユーザーでも使えるのでは?と思われるかもしれませんが、それは出来ません。アプリにはフローとの接続情報が定義されていて、アプリ初回起動時には従来と同じようにフロー内で使用するコネクタの接続認証が表示されます。ライセンスを持っていないとこの時点でアプリを利用することが出来ません。

アプリ起動時 作成者の接続を使う場合でも、フロー内で使用しているコネクタの認証は必要

・構築時の留意点となりますが、使用する接続の設定を行った後(作成者の接続に変更)に、フロー内のコネクタ調整など行い、アプリと再接続する場合に、エラーが出て再接続が出来ない事象が起きます。
※正確には把握出来てませんが、フローとの接続の定義でこの部分が対応できてなさそうです
この場合は一旦、元の設定(実行専用ユーザーの接続を使用する)に戻して再接続すれば解消します。その後に改めて使用する接続を変更すれば動作します。基本的には使用する接続の変更はフロー作成後に行うのがベターかと思います。

使用する接続を変更したまま再接続したら出るエラー
その他たまにフローの調整し再接続したら出る謎のエラーです
一旦元の接続設定に戻してから再接続すると解消する

おわりに

今回は、PowerAppsV2トリガーを使って出来るようになった設計イメージのご紹介ですが、これが推奨ということではなく、どういった設計にするかはケースバイケースとなりますので、V2トリガーを使うことで今までより選択肢が広がったよ。というイメージとなります。普通に使う場合でもV2トリガーの方がかなり扱いやすいので、今後は従来版よりV2トリガーを使うことをお勧めします。
使用する接続の変更は本文に記載したようなメリット・デメリットがありますので、ご要件や環境に合わせて、設計・実装のご参考にして頂ければと思います。

【お知らせ】 Power Platform コンサルティングサービスのご提供を開始いたしました。

本サービスはPower Platform(主にPower Apps、Power Automate)をご利用のお客様において、開発時や運用時のお困りごとに対し、チャットやTV会議を用いてのQA対応やアドバイス、サンプルコードのご提供などの業務サポートを行い、お客様のDX化推進業務を強くサポートするサービスとなります。

導入事例


今回ご紹介したアプリや本ブログにご興味をお持ちになられましたら、技術支援や同様のカスタマイズ開発など、各種ご支援させていただきますので、お気軽に「お問い合わせフォーム」よりお問い合わせください。
今後も自社で開発したお役立ちアプリや技術支援を行ったアプリのご紹介など、定期的に更新を行ってまいります。

関連記事