キャンバス アプリで問題を分離する
キャンバス アプリを使用すると、さまざまなビジュアルとさまざまなデータ接続を使用してアプリを設計できます。 IntelliSense とアプリ チェッカーを使用して、一般的な問題から保護します。 [監視 ] と [変数] パネル は、デバッグに役立ちます。
キャンバス アプリで問題を分離するためのその他の手法を次に示します。
デバッグ ラベルを使用して数式を検査する
数式は複雑な場合があります。 問題が発生した場合、失敗した部分を特定するのが難しい場合があります。 デバッグ ラベルは、数式のさまざまな部分の結果を確認するのに便利な手法です。
デバッグ ラベルは、Text プロパティが目的の数式に設定された Label です。 これにより、Power Apps でこれらの数式がどのように処理されるかを正確に確認できます。 スコープのバグを回避するには、ギャラリーやフォームなどの他のコントロールの外部にデバッグ ラベルを挿入します。
コンボ ボックス コントロールの表示が予想より少なく、ドロップダウン オプションが空白であるとします。
[コンボ] ボックスが正しく構成されているかどうかを確認します。 たとえば、 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 のバグである可能性があります。 サポート リクエストを通じてバグを報告し、回避策として別のコントロールを使用できます。
別のコントロールを試す
問題が特定のコントロールにあるかどうかを調べるには、同じ データ型 の入力または出力を持つ別のコントロールを使用してみてください。
ブール型
選択肢とテーブル
Date と DateTime
画像とメディア
- HTML テキスト
- Image
- オーディオ、ビデオ、マイクの Image プロパティ
番号
テキスト
すべての型
- 値をテキストに変換した後のラベル
別のコントロールで同じ問題が発生した場合、問題は使用される数式またはデータ ソースです。 上記のデバッグ手順に進み、問題をさらに特定します。
問題が特定の種類のコントロールでのみ発生する場合は、コントロールのバグである可能性があります。 バグは Microsoft に報告できます。
別のアプリ構造を試す
数式は、別のコントロール内のコントロールに対して異なる動作をすることができます。 たとえば、 ギャラリー 内のコントロールでは ThisItem を使用できますが、ギャラリーの外部のコントロールは使用できません。 ギャラリーまたはコンポーネントの外部にあるコントロールは、内部のコントロールを参照できません。
識別子のこの異なる可視性は スコープと呼ばれます。 他のコントロールを含むコントロールでは、新しいスコープが導入されます。
含まれているコントロール内で数式が機能しない場合は、スコープに関連している可能性があります。 コンテナーの外部で同じ数式を使用してみてください。
たとえば、ギャラリー内の Label コントロールは各レコードの名前を表示する必要がありますが、テキストは表示されません。
Label.Text が に ThisItem.Name
設定されています。
Gallery.Items は に Products
設定されています。
スコープの問題である場合にチェックするには、アプリの最上位にあるギャラリーの外部にデバッグ ラベルを挿入します。 データセットの最初のレコードの名前を表示するように Text プロパティを設定します。 First(Products).Name
デバッグ ラベルの結果は、ギャラリーの最初の行と同じである必要があります。 そうでない場合は、 サポートリクエストを通じて報告できる Power Apps のスコープのバグである可能性があります。 一方、両方が空白の場合、問題はデータ ソースにある可能性があります。
スコープの問題に対して考えられるいくつかの回避策:
- コントロールをコンテナーの外部に移動する
- グローバル変数またはコンテキスト変数のデータを参照する
- Edit フォーム コントロールの使用を避けるために Patch を使用する
以前のバージョンに復元する
アプリに大きな変更を加えず、再発行後に突然動作が停止した場合は、 以前のバージョンに復元してみてください。 再び動作する場合は、行われた変更を調べて、アプリが壊れている可能性のあるものを確認します。
場合によっては、新しいバージョンの Power Apps でバグが発生することがあります。 逆に、新しいバージョンではバグ修正が行われる可能性があります。 Microsoft サポートは、以前のオーサリング バージョンに戻すか、新しいバージョンにアップグレードするかを推奨できます。 独自に作成バージョンを変更する場合、推奨されないバージョンのサポートは限られています。
最小限の再現アプリを作成する
最小限の再現アプリを作成するプロセスでは、複雑なアプリでは明らかではないアプリ構成エラーが明らかになることがあります。 問題が修正されていなくても、原因を絞り込んで、他のユーザーに問題を説明しやすくなりました。