PowerApps は Flow を呼び出し、応答のアクションを介して、PowerApps でコレクションとして処理の内容を利用することができるのですが、設定のタイミングに少し注意点が必要だということを 縄神様 に教えていただいたのでメモを。
PowerApps から呼び出す Flow で次のようなものを設定してみます。
![]()
単純に本文に設定された JSON を返すだけのシンプルなものです。
PowerApps は、「本文」に設定されている情報を「応答本文の JSON スキーマ」の内容を元に解析し、値を利用するため、JSON スキーマの項目については、本文に対応した適切なスキーマを定義しておく必要があります。
といっても、本文を手動で書けるのであれば書き、REST API の戻りを利用するのであれば、一度実行してみて JSON を作成し、「サンプルのペイロードを使用してスキーマを生成する」に貼り付けてスキーマを作成すれば問題はないのですが。
ここで一つ意識しておく必要があることが「応答本文の JSON スキーマ」については、PowerApps 側でもインポートされているということです。
テストしながら確認した内容としては、「PowerApps のアクションとして Flow を関連付けた際の JSON スキーマが、PowerApps にインポートされる」ような動作をしていました。
(PowerApps のアプリをローカルにダウンロードした際の「.msapp」は zip 圧縮された JSON のファイルとなっており、「Entities.json」の内容から、JSON スキーマが PowerApps 側にもロードされていることが確認できます)
先ほど作成した Flow を呼ぶ、PowerApps のボタンを作成し、データを表示してみます。
![]()
ret というコレクションに値を設定しているのですが、これも正常に設定されていますね。
![]()
それでは、Flow の内容を編集してみます。
Memory という項目に 8GB という値を追加しました。
![]()
PowerApps から Flow の実行は正常に完了し、Flow 側の応答としては、項目が追加されています。
![]()
しかし、Flow 側のコレクションとしては、追加した値は認識されていません。
![]()
これが最初に書いた
- PowerApps のアクションとして Flow を関連付けた際の JSON スキーマが、PowerApps にインポートされる
動作の挙動です。
PowerApps に追加したタイミングの JSON スキーマが記録されており、そこには追加した項目の情報は含まれていません。
そのため、追加された項目が認識されていない状態となります。
ということで、一度ボタンの Flows から「アプリから削除」を行い、再度追加をします。
![]()
これで、最新の JSON スキーマが PowerApps に読み込まれますので、追加された項目が、コレクションでも認識された状態となります。
![]()
Flow を使用することで、ロジックを外部に出すことができ、ロジックとアプリ本体の修正を分離することができますが、応答を返すような処理の場合は、「PowerApps 側でもスキーマの登録は保存されている」ということは覚えておくとよさそうですね。
はじめまして。
REST APIで受け取ったJSONをFlowからPowerAppsで受け取って変数に入れたいけど上手くいかず、調べていたらここにたどり着きました。
Flow側で応答以外にも何かアクション追加されていますか?
Flowを同じように応答と本文・スキーマを設定し、PowerAppsのOnSelectの関数にcollect(ret,PowerAppsボタン.Run())を入力して試したのですが、Boolean型のTrueしか取得できませんでした。
ご教授いただければ幸いです。
ajaja
28 11月 18 at 20:10