作成者向け 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 管理コネクタを使ってアプリの可能性を高めていきたいですね!










