1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

作成者向け Power Apps 管理コネクタ

「やーい、おまえんPower Automate、ごみやーしきー!」とマウントをとられないためにという記事で、Power Automate 管理コネクタを紹介しました。

今回は、作成者向け Power Apps 管理コネクタを紹介します!

Power Appsにおける

  • つながり
  • つながりロールの割り当て
  • アプリのバージョン
  • アプリの表示名の設定
  • アプリの詳細の取得
  • アプリの一覧の取得
  • アプリの公開・削除
  • コネクタロールの割り当て
  • コネクタの取得・削除
  • 環境の取得

上記のようなアクションが用意されています。

Power Appsでアプリを一覧化してみる

まずはPower Appsで自分の環境のアプリを一覧化してみます。

  1. [データ]から[データの追加]
  2. [作成者向け Power Apps]を検索しクリック

上記を実行するとコネクタに接続できます。

image.png

Power Appsにおけるアクションの使い方

日本語で表示される場合の説明をさせていただきます。

作成者向けPowerApps.とタイプしていくと、コネクタで実行できるアクションが表示されます。

image.png

アクション名は全て英語です。

どのアクションが、何の役割を担うのか、少々面喰いそうな画面です。
調査方法は公式 リファレンスのアクションの操作 IDに注目してみてください。

-など除去されたアクションの表示名が、Power Appsのサジェストに出ていることがわかります。
このうちアプリを入手する (Get-Apps)を実行してみましょう。

公式 リファレンスではアプリを入手するが二つ表示されてしまっています。
機械翻訳の課題と思いますが、単一のPower Appsの詳細の取得(操作 ID:Get-App)複数ののPower Appsの取得(操作 ID:Get-Apps)とそれぞれ内容は異なります。

取得される値

テーブル モダン コントロールで中身を見てみましょう。

テーブル モダン コントロールプレビュー機能です。
正式なリリース前であり、変更される可能性も存在します。

テーブルを設定し、Itemsプロパティに作成者向けPowerApps.GetApps().valueと設定してみます。

image.png

  • 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
        }
    )
)

image.png

名前や環境名、バージョンが列挙されますね。
個人的にはappOpenUriが便利です。こちらはアプリケーションを起動するリンクです。

Param 関数と組み合わせたリンク共有に使えそうです。

どういったシーンを想定しているか、後述します。

非常に可能性を感じるdocumentUri

個人的な発見だったプロパティはdocumentUriです。
download 関数でこのUriを引数にすると、対象のPower Appsの情報が格納されたZipファイルを取得することができます。

image.png

Zipファイルの中身は

document.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の情報が取得できます。
こちらを活用することで、GPTClaude 3.5Geminiによるドキュメント化もできそうですね

Param 関数とコラボする

作成者向け Power Apps 管理コネクタに目を付けた理由として、Param 関数とのコラボレーションができるのではないかという発想があります。

例えばパラメーター付きのリンクを、Power Appsから送信するシーンがあると仮定します。
選択したレコードの値に応じて、パラメーターを変動してリンクを送ることができたら便利です。

今回は名画のリストとフォームを用意して検証してみたいと思います。

  • TableScreen - (Listsをテーブル形式で見る。選択したレコードを変数に格納し、ViewScreenに遷移)
    image.png
  • ViewScreen - TableScreenの詳細を見るビュー
    image.png

Power AppsのOnStart

OnStart
If(
    !IsBlank(Param("RecordID")),
    Set(
        selectedRecord,
        LookUp(
            SPOList,
            ID = Value(Param("RecordID"))
        )
    )
)

こちらでRecordIDというパラメーター付きで渡されたリンクの場合、グローバル変数selectedRecordにレコードを格納します。

StartScreen
If(
    IsBlank(Param("RecordID")),
    TableScreen,
    ViewScreen
)

RecordIDというパラメーターがある場合、アプリの起動時からViewScreenを表示。

image.png

テーブルのOnSelectも整合性が取れるように調整します。
選択したレコードを、グローバル変数selectedRecordにレコードを格納します。

OnSelect
Set(
    selectedRecord,
    Self.Selected
);
Navigate(
    ViewScreen,
    ScreenTransition.Fade
);

そしてViewScreenの設定です。

image.png

  • Shareと記載されたボタンを押して、現在のレコードのリンクを共有し、共有相手も簡単にアクセスできるようにします
  • ViewScreenのFormのDataSourceは、TableScreenのItemsと同様にすることで、
    グローバル変数であるselectedRecordにて選択した値を表示

ここから今見ている画面を他者にリンク付きで共有するとします。
その場合は、Power AppsWeb URIParam 関数を利用することで共有が実現できますね。

今回は、Outlook365コネクタから、HTML形式でメールを送ることで実現したいと思います。

OnSelect
// 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画面を移ることができますね。

image.png

↓↓↓

image.png

Power Appsの中から公開されたWeb Uriを取得することで共有の幅が広がりそうです

おわりに

アプリケーションを展開していくと、もっとこうできないかといった達成したいことが増えていきます。
今回のPower AppsのWeb Uri取得は、まさにそれでした。

作成者向け Power Apps 管理コネクタを使ってアプリの可能性を高めていきたいですね!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?