作成者向け Power Apps 管理コネクタ
「やーい、おまえんPower Automate、ごみやーしきー!」とマウントをとられないためにという記事で、Power Automate 管理コネクタを紹介しました。
今回は、作成者向け Power Apps 管理コネクタを紹介します!
Power Apps
における
- つながり
- つながりロールの割り当て
- アプリのバージョン
- アプリの表示名の設定
- アプリの詳細の取得
- アプリの一覧の取得
- アプリの公開・削除
- コネクタロールの割り当て
- コネクタの取得・削除
- 環境の取得
上記のようなアクションが用意されています。
Power Appsでアプリを一覧化してみる
まずはPower Apps
で自分の環境のアプリを一覧化してみます。
- [データ]から[データの追加]
- [作成者向け Power Apps]を検索しクリック
上記を実行するとコネクタに接続できます。
Power Appsにおけるアクションの使い方
日本語で表示される場合の説明をさせていただきます。
作成者向けPowerApps.
とタイプしていくと、コネクタで実行できるアクションが表示されます。
アクション名は全て英語です。
どのアクションが、何の役割を担うのか、少々面喰いそうな画面です。
調査方法は公式 リファレンスのアクションの操作 ID
に注目してみてください。
-
など除去されたアクションの表示名
が、Power Apps
のサジェストに出ていることがわかります。
このうちアプリを入手する (Get-Apps)を実行してみましょう。
公式 リファレンスではアプリを入手する
が二つ表示されてしまっています。
機械翻訳の課題と思いますが、単一のPower Appsの詳細の取得(操作 ID:Get-App)
と複数ののPower Appsの取得(操作 ID:Get-Apps)
とそれぞれ内容は異なります。
取得される値
テーブル モダン コントロールで中身を見てみましょう。
テーブル モダン コントロールはプレビュー
機能です。
正式なリリース前であり、変更される可能性も存在します。
テーブルを設定し、Items
プロパティに作成者向けPowerApps.GetApps().value
と設定してみます。
- id
- name
- properties
- tags
- type
上記が取得できます。
こちらの中でproperties
が特に多くのアプリケーションの情報が格納されています。
テーブルで表示するために少し加工が必要ですね。
戻り値は下記を参考にしましょう!
このうち私は下記の値に絞って取得してみることにしました🐟
プロパティ | 内容 |
---|---|
name | アプリの名前(表示名ではない) |
appVersion | アプリのバージョン(日付型) |
description | アプリの説明 |
displayName | アプリの表示名 |
documentUri | アプリのドキュメント URL |
environmentName | アプリの環境 |
lastModifiedByDisplayName | 最終更新をした人の名前 |
lastModifiedTime | 最終更新日時 |
ownerDisplayName | 所有者の名前 |
primaryDeviceHeight | 主要なデバイスの高さ |
primaryDeviceWidth | 主要なデバイスの幅 |
primaryFormFactor | タブレット型/モバイル型など |
publisherVersion | アプリを公開したときのPower Appsのバージョン |
sharedUsersCount | 共有したユーザー数 |
sharedGroupsCount | 共有したグループ数 |
上記を取得するべく、テーブル コントロールのItems
プロパティに下記の値を設定します。
ForAll(
作成者向けPowerApps.GetApps().value,
With(
{
appTags: tags,
appProperties: properties,
ownerProps: properties.owner,
modifierProps: properties.lastModifiedBy,
envProps: properties.environment,
appUris: properties.appUris
},
{
name: name,
appVersion: appProperties.appVersion,
description: appProperties.description,
displayName: appProperties.displayName,
documentUri: appUris.documentUri.value,
environmentName: envProps.name,
lastModifiedByDisplayName: modifierProps.displayName,
lastModifiedTime: appProperties.lastModifiedTime,
ownerDisplayName: ownerProps.displayName,
primaryDeviceHeight: appTags.primaryDeviceHeight,
primaryDeviceWidth: appTags.primaryDeviceWidth,
primaryFormFactor: appTags.primaryFormFactor,
publisherVersion: appTags.publisherVersion,
sharedUsersCount: appProperties.sharedUsersCount,
sharedGroupsCount: appProperties.sharedGroupsCount,
appOpenUri: appProperties.appOpenUri
}
)
)
名前や環境名、バージョンが列挙されますね。
個人的にはappOpenUri
が便利です。こちらはアプリケーションを起動するリンクです。
Param 関数と組み合わせたリンク共有に使えそうです。
どういったシーンを想定しているか、後述します。
非常に可能性を感じるdocumentUri
個人的な発見だったプロパティはdocumentUri
です。
download 関数でこのUri
を引数にすると、対象のPower Appsの情報が格納されたZipファイルを取得することができます。
Zipファイルの中身は
- Controls (folder)
- References (folder)
- DataSources.json
- ModernThemes.json
- Resources.json
- Templates.json
- Themes.json
- Resources (folder)
- PublishInfo.json
- AppCheckerResult.sarif
- checksum.json
- Header.json
- Properties.json
コードベースでPower Appsの情報が取得できます。
こちらを活用することで、GPT
やClaude 3.5
、Gemini
によるドキュメント化もできそうですね
Param 関数とコラボする
作成者向け Power Apps 管理コネクタに目を付けた理由として、Param 関数とのコラボレーションができるのではないかという発想があります。
例えばパラメーター付きのリンクを、Power Appsから送信するシーンがあると仮定します。
選択したレコードの値に応じて、パラメーターを変動してリンクを送ることができたら便利です。
今回は名画のリストとフォームを用意して検証してみたいと思います。
Power AppsのOnStart
に
If(
!IsBlank(Param("RecordID")),
Set(
selectedRecord,
LookUp(
SPOList,
ID = Value(Param("RecordID"))
)
)
)
こちらでRecordID
というパラメーター付きで渡されたリンクの場合、グローバル変数selectedRecord
にレコードを格納します。
If(
IsBlank(Param("RecordID")),
TableScreen,
ViewScreen
)
RecordID
というパラメーターがある場合、アプリの起動時からViewScreen
を表示。
テーブルのOnSelect
も整合性が取れるように調整します。
選択したレコードを、グローバル変数selectedRecord
にレコードを格納します。
Set(
selectedRecord,
Self.Selected
);
Navigate(
ViewScreen,
ScreenTransition.Fade
);
そしてViewScreen
の設定です。
-
Share
と記載されたボタンを押して、現在のレコードのリンクを共有し、共有相手も簡単にアクセスできるようにします - ViewScreenのFormの
DataSource
は、TableScreenのItems
と同様にすることで、
グローバル変数であるselectedRecord
にて選択した値を表示
ここから今見ている画面を他者にリンク付きで共有するとします。
その場合は、Power Apps
のWeb URI
とParam 関数を利用することで共有が実現できますね。
今回は、Outlook365コネクタ
から、HTML形式
でメールを送ることで実現したいと思います。
// 1. Power AppsのWeb URI - アプリケーションの表示名でルックアップ
Set(
OpenUri,
LookUp(
作成者向けPowerApps.GetApps().value,
properties.displayName = "TestApplication",
properties.appOpenUri
)
);
// 2. アプリの名前
Set(
AppName,
LookUp(
作成者向けPowerApps.GetApps().value,
properties.displayName = "TestApplication",
properties.displayName
)
);
// 3. 送り先 - テスト用に自分に送信
Set(
Me,
LookUp(
作成者向けPowerApps.GetApps().value,
properties.displayName = "TestApplication",
properties.createdBy.email
)
);
// 4. メールでリンク送信
Office365Outlook.SendEmailV2(
Me,
selectedRecord.Title,
$"<p>データの共有</p><br><br>ファイルリンク: <a href='{OpenUri}?RecordID={selectedRecord.ID}'>{AppName}</a>",
{IsHtml: true}
);
こちらでボタンを押すことで、共有した相手にメールで今見ている画面を共有できます。
共有された相手はファイルリンクをクリックすることで、直接Form画面を移ることができますね。
↓↓↓
Power Apps
の中から公開されたWeb Uri
を取得することで共有の幅が広がりそうです
おわりに
アプリケーションを展開していくと、もっとこうできないかといった達成したいことが増えていきます。
今回のPower AppsのWeb Uri取得は、まさにそれでした。
作成者向け Power Apps 管理コネクタを使ってアプリの可能性を高めていきたいですね!