埋め込みキャンバス アプリのガイドラインおよびトラブルシューティング
キャンバス アプリの埋め込みに関するガイダンス
この記事では、埋め込みキャンバス アプリを操作するためのガイダンスと、発生する可能性がある問題のトラブルシューティングに役立つヒントを提供します。
- 埋め込みキャンバス アプリは統一インターフェイスのモデル駆動型アプリでのみサポートされます。
- 埋め込みキャンバス アプリは、Web ではフォームごとに 3 つ、タブレット PC と電話のクライアント タイプでは 1 つだけ有効にできます。
- 複数の埋め込みキャンバス アプリをフォームに追加することができますが、Web では一度に 3 つ、タブレット PC と電話のクライアント タイプでは一度に 1 つしか有効にできません。
- モデル駆動型のアプリのフォームで Web クライアント タイプの埋め込みキャンバス アプリが 3 つ以上有効になっている場合、次のようなエラーメッセージが表示されます: ”Web フォーム ファクタのキャンバス アプリが 3 つ以上ありますが、このフォーム ファクタでは最大 3 つです。 キャンバス アプリの数は、Web 用に 3 つ、タブレットと電話用に 1 つに制限されています。」
- 埋め込みキャンバス アプリを有効化または無効化するには、埋め込みキャンバス アプリの有効化および埋め込みキャンバス アプリの無効化を参照してください。
- フォーム タブごとに1つの埋め込みキャンバス アプリを使用することを推奨します。
- 埋め込みキャンバス アプリをモデル駆動型フォームに追加する時は、常に値があることを保証されている必須の列を使用します。 列に値がない場合、埋め込みキャンバス アプリはホストのモデル駆動型フォーム上のデータが変更されるときに最新の情報に更新されません。
- モデル駆動型フォームを公開しても、埋め込みキャンバス アプリは公開されません。
- 埋め込みキャンバス アプリはホストのモデル駆動型フォームから独立して公開する必要があります。 詳細: アプリの公開。
- キャンバス アプリ コントロール プロパティ内の カスタマイズ ボタンを介して埋め込みキャンバス アプリを作成または編集するために Power Apps Studio を開くことが Web ブラウザーのポップアップ ブロッカーによりブロックされる場合、make.powerapps.com サイトを有効化、または一時的にポップアップ ブロッカーを無効化してから、再度 カスタマイズ を選択する必要があります。
- 新しい行を作成するときは、それに渡すために行のコンテキストが必要なため、埋め込みキャンバス アプリは表示されません。
- ModelDrivenFormIntegration.Item オブジェクトは読み取り専用です。
- データを記述するには、Dataverse コネクタを使用する必要があります。 詳細: Microsoft Dataverse
- 埋め込みキャンバス アプリは、ホストのモデル駆動型フォームを介してのみ作成することができます。
- キャンバス アプリが埋め込まれたモデル駆動型のフォームを表示したときに、「このアプリへのアクセス権がありません」というエラー メッセージが表示された場合は、作成者が埋め込みキャンバス アプリを共有していることを確認してください。 詳細: 埋め込みキャンバス アプリの共有。
- サブグリッド コントロールにキャンバス アプリを追加することができなくなりました。
- プレビュー リリースでは、メーカーはサブグリッド コントロールにキャンバス アプリを追加できました。 キャンバス アプリがモデル駆動型フォームに埋め込まれ、一般提供されたため、モデル駆動型フォームに埋め込まれたキャンバス アプリを追加することは、列に対して簡素化されます。
- これにより、メーカーは、現在の (メイン フォーム) 行をデータ コンテキストあるいは、現在の (メイン フォーム) 行に関連する行の一覧として渡すかを事前に決める必要がなくなるため、さらに簡単になりました。
- メーカーは、列から常に開始し、現在の (メイン フォーム) 行、または現在の (メイン フォーム) 行に関連する行の一覧の両方にアクセスできます。
- キャンバス アプリで関連する行のリストにアクセスするにあたって、作成者はキャンバスアプリでデータソースの改善エクスペリエンスと Dataverse ビュー機能を有効にして、Dataverse コネクタとフィルタ機能を使用することができます。
たとえば、取引先担当者 テーブルの アクティブな取引先担当者 ビューにアクセスするには、メーカーは以下を使用できます: フィルター (取引先担当者、'取引先担当者 (ビュー)'.'アクティブな取引先担当者')。 - サブグリッド コントロールを使用する既存のキャンバス アプリは、引き続き機能します。 ただし、代わりに列を使用するために、次のアプリケーションに移行することをお勧めします。 詳細: 詳しくは、現在の (メイン フォーム) 行に関連する行の一覧を使用するモデル駆動型フォーム上の埋め込みキャンバス アプリへの移行 をご覧ください。
埋め込みキャンバス アプリの有効化
- 埋め込みキャンバス アプリとして表示するようにカスタマイズされた列を選択します。
- 列のプロパティ ダイアログ ボックスで、コントロール タブを選択します。
- コントロールのリストで、キャンバス アプリを選択してからWeb オプションを選択します。
- OK を選択します。
埋め込みキャンバス アプリの無効化
- 埋め込みキャンバス アプリとして表示するようにカスタマイズされた列を選択します。
- 列のプロパティ ダイアログ ボックスで、コントロール タブを選択します。
- コントロールのリストで、既定のコントロールを選択してから Web オプションを選択します。
- OK を選択します。
埋め込みキャンバス アプリでデータを保存する
- メイン フォームのコマンドバーの [保存] ボタンを選択するなど、モデル駆動型アプリから作成された保存イベントは、埋め込みキャンバス アプリで行われた変更を保存しません。
- 埋め込みキャンバス アプリで行った変更を保存するには、Dataverse コネクタ を使用します。
- ModelDrivenFormIntegration 制御 OnDataRefresh アクションは、埋め込みキャンバス アプリ内のデータを更新するためにのみ使用する必要があります。 OnDataRefresh アクションを使って、埋め込みキャンバス アプリ内の変更を保存することはお勧めしません。
埋め込みキャンバス アプリに関する既知の問題および制限
制限
- キャンバス アプリ コントロールは Web クライアントの種類と共に使用する場合にのみサポートされます。 現在、電話およびタブレット PC クライアントの種類はサポートされていません。
- セキュリティ ロール内のキャンバス アプリ特権を使用して、埋め込みキャンバス アプリやスタンドアロン キャンバス アプリのいずれかに対するアクセス権をアプリのユーザーに付与することはできません。 埋め込みキャンバス アプリの共有の詳細については、埋め込みキャンバス アプリの共有にアクセスしてください。
- ホストのモデル駆動型フォームに表示されているものと同じデータを記述する場合、フォームがリフレッシュされるまで引き続き古いデータが表示されます。 そのための簡単な方法は RefreshForm メソッドを使うことです。
- バーコード スキャン、デバイスからの写真のキャプチャ、ファイルの添付などのオフラインおよびデバイス機能のコントロールは、埋め込みキャンバス アプリではサポートされていません。
ModelDrivenFormIntegration コントロールが、関連テーブルの列に値を指定しない
たとえば、ModelDrivenFormIntegration コントロールが取引先企業テーブルに接続されている場合、ModelDrivenFormIntegration.Item.'取引先責任者'.'氏名' を使用しても値は返されません。
関連テーブルのカラムにアクセスするには、以下のいずれかの式を使用します:
- LookUp(取引先企業, 取引先企業 = GUID(First(ModelDrivenFormIntegration.Data).ItemId)).'取引先責任者'.'氏名'
- ItemId は作成時には空ですが、実行時には値を持ちます。
- LookUp(取引先企業, 取引先企業 = ModelDrivenFormIntegration.Item.Account).'取引先責任者'.'氏名' (この式は読みやすくなっていますが、前式の方が速度が若干よいです。)
埋め込みキャンバス アプリが正しくレンダリングされない
キャンバス アプリを レスポンシブ になるようにビルドできます。これは、利用可能な画面スペースを賢明に使用するために、異なる画面サイズやフォーム ファクタに自動的にアプリを合わせ、あらゆるデバイス、フォーム ファクター、画面サイズで優れた UI と UX を提供する機能のことです。 アプリが応答するように構築されているかどうかに応じて、キャンバス アプリがモデル駆動型アプリ フォームのフィールド内で正しくレンダリングされるように、異なる設定をお勧めします。 キャンバス アプリの周囲に空白やスクロール バーが追加される場合は、アプリで次の点を確認することをお勧めします。
レスポンシブなアプリの場合:
- 全体表示 オプションを無効化します。 これにより、アプリに設定したディメンションとプロパティに従ってアプリをスケーリングできるようになります。 埋め込みキャンバス アプリは、キャンバス アプリ周囲の追加の空白またはスクロール バーなど、モデル駆動型アプリ フォームのフィールド内では正しくレンダリングされない場合があります。
レスポンシブ アプリの場合:
- 全体表示 オプションを有効にすることをお勧めします。 これは、利用可能なスペースに合わせてアプリを拡大縮小するのに役立ちます。
両方のシナリオにおいて、App Name プロパティ値が設定されているか、または埋め込みキャンバス アプリ コントロールで正しく設定されていることを確認してください。
埋め込みキャンバス アプリで高さが正しく尊重されない
フォーム フィールドの高さ プロパティは、キャンバス アプリ コンポーネントでは考慮されません。 埋め込まれている場合、キャンバス アプリ コンポーネントのサイズは、キャンバス アプリで設定されたアスペクト比を尊重します。 アスペクト比が固定されているため、キャンバス アプリ コンポーネントの高さはアプリの幅に対して計算されます。 アプリの幅は、モデル駆動型アプリで使用可能な水平方向のスペースに基づいて決定されます。 キャンバス アプリ コンポーネントの高さを調整する場合は、キャンバスアプリで アスペクト比のカスタマイズ をお勧めします。 アスペクト比をカスタマイズするには、アプリがタブレットレイアウトである必要があることに注意してください。
領域に合わせて拡大縮小を有効にする
既定では、キャンバス アプリでは領域に合わせて拡大縮小するオプションが有効になっています。
- 編集用のモデル駆動型アプリのフォームに埋め込むキャンバス アプリを開きます。
- Power Apps studioで、ファイル > 設定 > 画面サイズ + 向きの順に選択します。
- 詳細設定で、領域に合わせて拡大縮小をオンに設定します。
アプリ名のプロパティ値が欠落しているか、または正しく定義されない
この問題を解決するには、次の正しいオプションを選択します。
管理ソリューション: ソリューションが管理ソリューションとして環境にインポートされた場合は、次の手順を実行します。
Power Apps にサインインし、埋め込みキャンバス アプリを最初に作成した開発環境に移動します。 これは、ソリューションがエクスポートされた環境でもあります。
キャンバス アプリを含むアンマネージド ソリューションを開き、ソリューション コンポーネントのリストでキャンバス アプリを見つけます。 キャンバス アプリ名をコンポーネント リストに表示されているとおりにコピーします。 例: contoso_flooringestimatesapp_624d7。
同じソリューションで、キャンバス アプリ コントロールが埋め込まれたモデル駆動型アプリを編集し、前の手順の値を使用してキャンバス アプリ名を埋め込みキャンバス アプリ コントロールに設定します。 詳細: 埋め込みキャンバス アプリをモデル駆動型フォームに追加する
開発環境からソリューションをエクスポートし、ターゲット環境にソリューションをインポートします。
アンマネージド ソリューション: ソリューションがアンマネージド ソリューションとして環境にインポートされた場合は、キャンバス アプリ コントロールが埋め込まれたモデル駆動型アプリを編集し、管理ソリューションで説明された同様の手順を実行し、キャンバス アプリ名 プロパティを設定します。
埋め込まれたキャンバス アプリ コントロールは、別の環境からキャンバス アプリをロードします
キャンバス アプリが埋め込まれたモデル駆動型アプリを含むソリューションがターゲット環境にインポートされると、コントロールはソース環境 (ソリューションがエクスポートされた場所) からキャンバス アプリを読み込みます。 コントロールは、ターゲット (現在の) 環境からキャンバス アプリをロードする必要があります。
この問題は、アプリ ユーザーがターゲット (現在の) 環境で CanvasApp 拡張メタデータ テーブルへの読み取りアクセス権を持っていないために発生します。 この問題を解決するには、CanvasApp 拡張メタデータ テーブルへの読み取りアクセス権のあるアプリで使用するセキュリティ ロールにユーザーを追加します。 詳細: CanvasApp 拡張メタデータ テーブルの読み取り権限を付与する
エラー メッセージ:「キャンバス アプリ エンティティの読み取り特権がありません。 管理者に問い合わせてください」
エラー メッセージは、埋め込みキャンバス アプリが表示されるモデル駆動型アプリ フォームに表示されます。
この問題は、アプリ ユーザーが CanvasApp 拡張メタデータ テーブルへの読み取りアクセス権を持っていないために発生します。 この問題を解決するには、CanvasApp 拡張メタデータ テーブルへの読み取りアクセス権のあるアプリで使用するセキュリティ ロールにユーザーを追加します。
CanvasApp 拡張メタデータ テーブルの読み取り権限を付与する
- Power Apps で、環境を選択してから左側のナビゲーション ペインで アプリ を選択します。
- 必要なアプリを選択し、… を選択してから 共有 を選択します。
- 左側のペインで、アプリを選択してから、セキュリティ ロールを管理する を選択します。
- Basic ユーザー セキュリティ ロールなど、アプリに割り当てられているセキュリティ ロールを開きます。
- カスタム エンティティ タブを選択し、CanvasApp 拡張メタデータ テーブルで必要な組織スコープの読み取り権限を設定します。
- 保存して閉じる を選択して、セキュリティ ロール ウィンドウを閉じます。
関連項目
モデル駆動型フォームにキャンバス アプリを埋め込む
埋め込み型キャンバス アプリケーションをモデル駆動フォームに追加する
モデル駆動型フォームの埋め込み型キャンバス アプリケーションを編集する
モデル駆動フォームに埋め込まれたキャンバス アプリケーションの画面サイズと表示方向をカスタマイズする
組み込みキャンバス アプリ内からホスト フォームで事前定義済みの操作を実行する
ModelDrivenFormIntegrationコントロールのプロパティとアクション
埋め込みキャンバス アプリの共有
パブリック プレビュー リリースを使用して作成された、モデル駆動型フォームの埋込み型キャンバスアプリケーションを最新版へと移行する
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。