キャンバス アプリで問題を分離する
キャンバス アプリを使用すると、さまざまなビジュアルとさまざまなデータ接続を使用してアプリを設計できます。 IntelliSense と App checker を一般的な問題から保護します。 監視 と Variables パネル デバッグに役立ちます。
キャンバス アプリで問題を分離するその他の手法を次に示します。
デバッグ ラベルを使用して数式を検査する
数式は複雑な場合があります。 問題が発生した場合、失敗した部分を特定するのが難しい場合があります。 デバッグ ラベルは、数式のさまざまな部分の結果を確認するのに便利な手法です。
デバッグ ラベルは Label で、その Text プロパティは目的の数式に設定されます。 Power Apps でこれらの数式がどのように処理されるかを正確に確認できます。 バグのスコープを回避するにはGallery Form などの他のコントロールの外部にデバッグ ラベルを挿入します。
Combo ボックス コントロールの表示が予想よりも少なく、ドロップダウン オプションが空白であるとします。
Combo ボックスが正しく構成されているかどうかを確認します。 たとえば、 Items プロパティは、次の複雑な数式に設定されます。
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
最も内側の式 Filter( Products, Rating > 4 )
から始めます。 デバッグ ラベルを挿入し、その Text プロパティを設定して、その式の結果をテストします。 確認に役立つ情報を次に示します。
- 結果の数が予想どおりかどうかを確認します。
CountRows( Filter( Products, Rating > 4 ) )
- 最初の結果を調べて、フィルターが期待どおりに動作していることを確認します。
"Rating of first result is " & First( Filter( Products, Rating > 4 ) ).Rating
- 名前を組み合わせて結果を確認します。
Concat( Filter( Products, Rating > 4 ), ProductName & ", ")
ヒント
データセットを操作する場合、デバッグ テーブルはレコードのプレビューに役立ちます。 この概念は、デバッグ ラベルに似ています。 Items プロパティを対象のデータセットに設定してData テーブルを挿入します。
データセットのパフォーマンスを向上させるために、 FirstN 関数と LastN 関数 を使用することをお勧めします。
式が正しく評価されていることを確認したら、次の外側の式 GroupBy( Filter( Products, Rating > 4 ), "ProductType", "Details" )
に進むことができます。 メソッド的に進むと、複雑な式のどの部分が機能していないかを確認できます。
空のドロップダウン オプションを使用する場合は、 DisplayFields プロパティから始めます。 [ProductType]
に設定されている場合を想像してください。 デバッグ ラベルを使用して、このフィールドが Power Apps によって認識され、テキストが含まれていることを確認します。 すべてのドロップダウン オプションは空なので、レコードを調べるので十分です。 最初のレコードを選択し、その ProductType
フィールドが何であるかを確認しましょう。 デバッグ ラベルを次の値に設定します。
First(
AddColumns(
GroupBy(
Filter( Products, Rating > 4 ),
"ProductType",
"Details"
),
"Total quantity",
Sum( Details, Quantity )
)
).ProductType
結果が空の場合は、次のようになります。
- そのレコードの
ProductType
フィールドは実際には空です。 データセットがアプリの外部から取得された場合は、Power Apps の外部で確認します。 - 1 つ以上の式が機能していません。 上記のように分割して絞り込みます。 Power Apps のバグや、数式の記述に誤りがある可能性があります。
- データが Power Apps に到達していません。 ネットワークの問題、データ ソースの問題、または Power Apps のバグが考えられます。
結果にテキストがある場合は、Power Apps のバグがコントロールに含まれている可能性があります。 バグは、support 要求を通じて報告し別のコントロール回避策として使用。
別のコントロールを試す
問題が特定のコントロールにあるかどうかを調べるには、入力または出力の同じ data 型 を持つ別のコントロールを使用してみてください。
Boolean
選択肢とテーブル
Date と DateTime
画像とメディア
- HTML テキスト
- イメージ
- Image Audio、Video、および Microphone のプロパティ
番号
Text
すべての種類
- ラベル、値をテキストに変換した後
別のコントロールで同じ問題が発生した場合、問題は使用される数式またはデータ ソースにあります。 上記のデバッグ手順に進み、問題をさらに特定します。
問題が特定の種類のコントロールでのみ発生する場合は、コントロールのバグである可能性があります。 バグは Microsoft に報告できます。
別のアプリ構造を試す
数式は、別のコントロール内のコントロールに対して動作が異なる場合があります。 たとえば、 Gallery 内のコントロールでは、 ThisItem を使用できますが ギャラリー外のコントロールでは使用できません。 Gallery または Component の外部にあるコントロールは、内部のコントロールを参照できません。
識別子のこの異なる可視性は、 scope と呼ばれます。 他のコントロールを含むコントロールでは、新しいスコープが導入されます。
数式が含まれているコントロール内で動作しない場合は、スコープに関連している可能性があります。 コンテナーの外部で同じ数式を使用してみてください。
たとえば、Gallery 内の Label コントロールには各レコードの名前が表示されますが、テキストは表示されません。 Label.Text は ThisItem.Name
に設定されます。 Gallery.Items は Products
に設定されます。
スコープの問題かどうかを確認するには、debug ラベルGalleryの外側にあるアプリの最上位に挿入します。 データセットの最初のレコードの名前を表示するには、 Text プロパティを設定します: First(Products).Name
。
デバッグ ラベルの結果は、ギャラリーの最初の行と同じである必要があります。 そうでない場合は、 サポート要求を通じて報告できる Power Apps のスコープのバグである可能性があります。 一方、両方が空白の場合、問題はデータ ソースにある可能性があります。
スコーピングの問題に対して考えられるいくつかの回避策:
- コントロールをコンテナーの外部に移動する
- グローバル変数またはコンテキスト変数のデータを参照する
- Patch を使用して、Edit フォーム コントロールの使用を回避する
以前のバージョンに復元する
アプリに大きな変更を加えておらず、再発行後に突然動作が停止した場合は、 以前のバージョンにインストールしてみてください。 もう一度動作する場合は、行われた変更を調べて、アプリが壊れている可能性がある内容を確認します。
新しいバージョンの Power Apps でバグが発生することがあります。 逆に、新しいバージョンではバグ修正が行われる可能性があります。 Microsoft サポートは、以前のオーサリング バージョンに変換するか、新しいバージョンにアップグレードするかを推奨できます。 作成バージョンを自分で変更する場合は、推奨されないバージョンのサポートが制限されることを覚えておいてください。
最小限の再現アプリを作成する
minimal repro アプリを作成するプロセス複雑なアプリでは明らかではないアプリ構成エラーが明らかになる場合があります。 問題が修正されていない場合でも、原因を絞り込んで、他のユーザーに問題を説明しやすくしました。