Power Apps の App オブジェクト

適用対象: キャンバス アプリ

現在実行中のアプリに関する情報を取得し、アプリの動作を制御します。

Description

コントロールと同様に、 App オブジェクトには、表示されている画面を識別し、変更を失わないように変更を保存するように求めるプロパティがあります。 すべてのアプリには App オブジェクトがあります。

App オブジェクトの一部のプロパティの数式を記述します。 ツリー ビュー ウィンドウの一番上で、その他のコントロールまたは画面と同じように App オブジェクトを選択します。 オブジェクトのプロパティの 1 つを表示または編集するには、数式バーの左側にあるドロップダウン リストでオブジェクトを選択します。

[ツリー ビュー] ウィンドウで選択されている App オブジェクトのスクリーンショット。プロパティ ウィンドウが表示されます。

この記事では、次の App オブジェクトのプロパティについて説明します。

  • ActiveScreen – 現在表示されている画面。
  • BackEnabled – アプリがデバイスのバック ジェスチャに応答する方法。
  • ConfirmExit と ConfirmExitMessage – アプリを閉じる前にユーザーに警告します。
  • 接続文字列 – Application Insights のログ記録を設定します。
  • 数式 – 名前付き数式、ユーザー定義関数、およびユーザー定義型を定義します。
  • OnError – エラーをグローバルに処理します。
  • OnStart – アプリの起動時にロジックを実行します。
  • StartScreen – アプリの読み込み時に最初に表示される画面を設定します。
  • StudioVersion – アプリを発行した Power Apps Studio バージョンを返します。

ActiveScreen プロパティ

ActiveScreen プロパティは、現在表示されている画面を識別します。

このプロパティは画面オブジェクトを返します。 現在の画面のプロパティ (数式 App.ActiveScreen.Name の名前など) を参照する場合に使用 します。 このプロパティは、 比較数式 App.ActiveScreen = Screen2 と同様に、別の画面オブジェクトと比較して 、Screen2 が現在の画面かどうかを確認することもできます。

[戻る] または [移動] 機能を使用して、表示される画面を切り替えます。

BackEnabled プロパティ

BackEnabled プロパティは、Power Apps モバイルで実行しているときに、アプリがデバイスの戻るジェスチャに応答する方法を変更します (Android デバイスではハードウェアの戻るボタンをスワイプするか、iOS デバイスでは左からスワイプします)。 有効にすると、デバイスの戻るジェスチャは、最近表示された画面に戻ります。これは Back 数式に 似ています。 無効にすると、デバイスのバック ジェスチャによってユーザーがアプリの一覧に移動します。

ConfirmExit プロパティ

保存されていない変更を失いたい人はいません。 ConfirmExit プロパティと ConfirmExitMessage プロパティを使用して、アプリを閉じる前にユーザーに警告します。

Note

  • ConfirmExit は、Power BI や SharePoint などの埋め込みアプリでは機能しません。
  • ConfirmExit はカスタム ページではサポートされていません。
  • ここで、これらのプロパティは、 遅延読み込み プレビュー機能が有効になっている場合 (既定では新しいアプリの場合) に、最初の画面でのみコントロールを参照できます。 他の画面を参照する場合、Power Apps Studio にエラーは表示されませんが、発行されたアプリは Power Apps Mobile またはブラウザーで開きません。 Microsoftは、この制限を解除するために取り組んでいます。 それまでの間、[設定] の [遅延読み込み>Upcoming 機能 (プレビューの下) をオフにします。

ConfirmExit

ConfirmExit はブール型のプロパティで、 true の場合、アプリを閉じる前に確認ダイアログ ボックスを開きます。 既定では、このプロパティは false で、ダイアログ ボックスは表示されません。

ユーザーがアプリに未保存の変更を加えている可能性がある場合は、このプロパティを使用して、アプリを終了する前に確認ダイアログ ボックスを表示します。 変数とコントロールのプロパティをチェックする数式を使用します (たとえば、編集フォーム コントロールの保存されていないプロパティ)。

確認ダイアログ ボックスは、次のようなデータが失われる可能性がある状況で表示されます。

  • Exit 関数を実行します。
  • アプリがブラウザーで実行されている場合:
    • アプリが実行されているブラウザーまたはブラウザー タブを閉じます。
    • ブラウザーの [戻る] ボタンを選択します。
    • LaunchTarget of Self を使用して Launch 関数を実行します
  • アプリが Power Apps Mobile (iOS または Android) で実行されている場合:
    • Power Apps Mobile でスワイプして別のアプリに切り替えます。
    • Android デバイスの [戻る] ボタンを選択します。
    • Launch 関数を実行して、別のキャンバス アプリを起動します。

確認ダイアログ ボックスの正確な外観は、デバイスと Power Apps のバージョンによって異なる場合があります。

確認ダイアログ ボックスが Power Apps Studio に表示されません。

ConfirmExitMessage

既定では、確認ダイアログ ボックスに変更が保存されていない可能性があります。などの、汎用メッセージがユーザーの言語で表示されます。

ConfirmExitMessage を使用し、確認ダイアログ ボックスのカスタム メッセージを指定します。 このプロパティが空白の場合、既定値が使用されます。 カスタム メッセージは、確認ダイアログ ボックス内に収まるように必要に応じて切り捨てられるため、メッセージは最大で数行にしてください。

ブラウザーでは、確認ダイアログ ボックスにブラウザーからの汎用メッセージを表示できます。

Example

  1. App オブジェクトの ConfirmExit プロパティをこの式に設定します。

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    ユーザーがいずれかのフォームでデータを変更し、それらの変更を保存せずにアプリを閉じようとすると、ダイアログ ボックスが表示されます。

    [汎用確認] ダイアログ ボックス。

  2. App オブジェクトの ConfirmExitMessage プロパティをこの数式に設定します。

    If( AccountForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    ダイアログ ボックスには、ユーザーがいずれかのフォームでデータを変更し、それらの変更を保存せずにアプリを閉じようとしたときに、フォーム固有のメッセージが表示されます。

    フォーム固有の確認ダイアログ ボックス

接続文字列プロパティ

接続文字列 プロパティを 使用して、システム生成のアプリケーション ログを Application Insights にエクスポートします。

接続文字列を設定するには:

  1. Power Apps Studio で編集のためにアプリを開きます。
  2. 左側のナビゲーションのツリー ビューでアプリ オブジェクトを選択します。
  3. プロパティ ウィンドウに 接続文字列 を入力します。

データが Application Insights に送信されない場合は、Power Platform 管理者に問い合わせて、Application Insights がテナント レベルで無効になっているかどうかを確認してください。

Formulas プロパティ

Formulas プロパティを使用して、アプリ全体で再利用可能なロジックを定義します。 Formulas プロパティは、次の 3 つのコンストラクトをサポートします。

名前付き計算式

Formulas プロパティで名前付き数式を使用して、アプリ全体で再利用できる数式を定義します。

Power Apps では、数式がコントロール プロパティの値を決定します。 たとえば、アプリ全体で背景色を一貫して設定するには、各コントロールの Fill プロパティを共通の数式に設定します。

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

この数式が表示される場所が非常に多いので、変更が必要な場合は、面倒になり、エラーが発生しやすくなります。 代わりに、 OnStart でグローバル変数を作成して色を 1 回設定し、アプリ全体で値を再利用します。

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

この方法のほうが優れていますが、BGColor の値が設定される前の OnStart の実行に依存しています。 BGColor はまた、作成者が気付いていないアプリの一部で操作されたり、他の誰かによって行われた変更であったり、追跡が困難な場合があります。

名前付き計算式によって代替手段が提供されます。 一般的に control-property = expression を記述するのと同様に、代わりに name = expression を記述し、アプリ全体で 名前 を再利用して を置き換えることができます。 Formulas プロパティで次の 数式を 定義します。

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

名前付き計算式を使用する利点は次のとおりです。

  • 数式の値は常に利用可能です。 タイミング依存関係も、値が設定される前に最初に実行する必要のある OnStart もなく、式の値が不正確になる時間もありません。 名前付き計算式は、循環参照を作成しない限り、任意の順序で相互に参照できます。 それらは並行して計算できます。
  • 数式の値は常に最新です。 数式は、コントロール プロパティまたはデータベース レコードに依存する計算を実行でき、それらが変更されると、数式の値が自動的に更新されます。 変数の場合のように値を手動で更新する必要はありません。 また、数式は必要な場合にのみ再計算されます。
  • 式の定義は不変です。 数式の定義は信頼できる唯一の情報源であり、アプリ内の他の場所で値を変更することはできません。 変数を使用すると、一部のコードで予期せず値が変更される可能性がありますが、このデバッグが困難な状況は、名前付き数式では不可能です。
  • 数式の計算は延期できます。 値が不変であるため、必要なときにいつでも計算できます。つまり、必要になるまでは計算する必要がありません。 アプリのスクリーン 2 まで使用されない数式の値はスクリーン 2 が表示されるまで計算する必要はないと表示されます。 この作業を遅延させることにより、アプリの読み込み時間を改善できます。 名前付き計算式は宣言型であり、システムが計算方法とタイミングを最適化する機会を提供します。
  • 名前付き計算式は Excel の概念です。 非常に多くの人が Excel をよく知っているので Power Fx は可能な限り Excel の概念を使用します。 名前付き計算式は、名前マネージャーで管理される Excel の名前付きセルおよび名前付き計算式と同等です。 スプレッドシートのセルやコントロール プロパティのように、自動的に再計算されます。

Formulas プロパティで名前付き数式を 1 つずつ定義し、それぞれセミコロンで終わります。 数式の型は、数式内の要素の型と、それらがどのように一緒に使用されるかから推測されます。 たとえば、これらの名前付き計算式は、現在のユーザーに関する有用な情報を Dataverse から取得します。

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

UserTitle の数式を更新する必要がある場合は、この 1 つの場所で簡単に更新できます。 もしも UserPhone アプリでは必要ない場合、これらの Dataverse のユーザー テーブルへの呼び出しは作られません。 使用されていない数式定義を含めても問題はありません。

名前付き計算式のいくつかの制限:

  • 動作関数を使用したり、アプリ内で副作用を引き起こしたりすることはできません。
  • 循環参照を作成することはできません。 a = b;b = a; を同じアプリ内で持つことは許可されていません。

ユーザー定義関数

Power Fx には、IfTextSet などの組み込み関数の長いリストがあります。 ユーザー定義関数を使用すると、組み込み関数と同様に、パラメーターを受け取って値を返す独自の関数を記述できます。 ユーザー定義関数は、パラメーターを追加し、動作式をサポートする名前付き数式の拡張機能と考えてください。

たとえば、ライブラリからフィクションの本を返す名前付き数式を定義できます。

Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
            { Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];

LibraryFiction = Filter( Library, Genre = "Fiction" );

パラメーターを指定しない場合は、ジャンルごとに個別の名前付き数式を定義する必要があります。 ただし、代わりに、名前付き数式をパラメーター化します。

LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );

LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );

これで、1 つのユーザー定義関数を使用して、 LibraryGenre( "Fiction" )LibraryGenre( "Reference" )、または他のジャンルでフィルター処理を呼び出すことができます。

構文は次のとおりです。

FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = Formula;

  • FunctionName – 必須です。 ユーザー定義関数の名前。
  • ParameterNames – オプション。 関数パラメーターの名前。
  • ParameterType(s) – 任意です。 型の名前。組み込みの データ型名、データ ソース名、または Type 関数を使用して定義された
  • ReturnType – 必須です。 関数からの戻り値の型。
  • – 必須。 パラメーターに基づいて関数の値を計算する数式。

各パラメーターとユーザー定義関数からの出力を入力する必要があります。 この例では、 SelectedGenre: TextText 型の関数の最初のパラメーターを定義し、 SelectedGenreFilter 操作の本文で使用されるパラメーターの名前です。 サポートされている型名についてはデータ型を参照してください。 Type 関数は、関数から書籍のテーブルを返すことができるように、ライブラリの集計型を作成するために使用されます。

LibraryTypeは、レコード型の複数形のテーブルとして定義します。 1 つのブックを関数に渡す場合は、 RecordOf 関数を使用して、このテーブルのレコードの型を抽出できます。

BookType := Type( RecordOf( LibraryType ) );

IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);

関数パラメーターのレコード マッチングは、Power Fx の他の部分よりも厳しくなっています。 レコード値のフィールドは、型定義の適切なサブセットである必要があり、追加のフィールドを含めることはできません。 たとえば、 IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" ) するとエラーが発生します。

再帰は、ユーザー定義関数ではまだサポートされていません。

ユーザー定義関数の動作

名前付き数式とほとんどのユーザー定義関数は、SetNotify のような副作用を持つ行動関数をサポートしていません。 一般に、可能であれば、状態の更新は避けてください。 代わりに、関数型プログラミング パターンに依存し、Power Fx が必要に応じて自動的に数式を再計算できるようにします。 しかし、やむを得ない場合もあります。 ユーザー定義関数に動作ロジックを含めるには、本文を中かっこで囲みます。

Spend( Amount: Number ) : Void = {
    If( Amount > Savings, 
        Error( $"{Amount} is more than available savings" ),
        Set( Savings, Savings - Amount );
        Set( Spent, Spent + Amount) 
    );
}

これで、 Spend( 12 ) を呼び出して、Savings に 12 が含まれているかどうかを確認し、存在する場合は 12 で借方に引き落とし、12 を Spent 変数に追加できます。 この関数は値を返さないため、戻り値の型は Void です。

動作ユーザー定義関数の構文は次のとおりです。

FunctionName( [ ParameterName1: ParameterType1 [ , ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; Formula2 ... ]};

  • FunctionName – 必須です。 ユーザー定義関数の名前。
  • ParameterNames – オプション。 関数パラメーターの名前。
  • ParameterType(s) – 任意です。 組み込みデータ型名、データ ソース名、または Type 関数で定義された型の名前です。
  • ReturnType – 必須です。 関数からの戻り値の型。 関数が値を返さない場合は Void を使用します。
  • 数式 – 必須。 パラメーターに基づいて関数の値を計算する数式。

すべての Power Fx 数式と同様に、エラーが発生しても実行は終了しません。 Error 関数が呼び出されると、If 関数、SavingsSpent の変更が行われないようにします。 IfError 関数は、エラー後の実行を阻止する目的でも使用できます。 Void を返しても、問題があれば数式はエラーを返します。

ユーザー定義型

Type 関数で名前付き数式を使用して、ユーザー定義型を作成します。 ユーザー定義の型を定義する場合は、:= の代わりに = を使用します (Book := Type( { Title: Text, Author: Text } ) など)。 詳細と例については、Type関数を参照してください。

OnError プロパティ

OnError を使用して、アプリのどこかでエラーが発生したときにアクションを実行します。 エンド ユーザーに表示される前に、エラー バナーをインターセプトするグローバルな機会を提供します。 Trace 関数を使用してエラーをログに記録したり、データベースまたは Web サービスに書き込んだりすることもできます。

Canvas アプリでは、数式の評価結果がすべてエラー チェックされます。 エラーが発生した場合、OnError は、数式全体が IfError 関数にラップされている場合にアプリが使用するのと同じ FirstError スコープ変数と AllErrors スコープ変数で評価されます。

OnError が空の場合、既定のエラー バナーにエラーの FirstError.Message が表示されます。 OnError 数式を定義すると、この動作がオーバーライドされるため、作成者は必要に応じてエラー報告を処理できます。 エラー関数を使用してエラーを再スローすることで、OnError で既定の動作を要求できます。 一部のエラーを別の方法で除外または処理するが、他のエラーを通過させる場合は、再スローアプローチを使用します。

OnError は、IfError のように計算の誤りを置き換えることはできません。 OnError が呼び出された場合、エラーは既に発生しており、IfError などの数式の計算によって既に処理されています。OnError はエラー報告のみを制御します。

OnError 数式は同時に評価され、その評価が他のエラーの処理と重複する可能性があります。 たとえば、 OnError の先頭にグローバル変数を設定し、後で同じ数式で読み上げた場合、値が変更されている可能性があります。 With 関数 を使用して、数式にローカルな名前付き値を作成します。

OnError は各エラーを個別に処理しますが、各エラーに対して既定のエラー バナーが個別に表示されない場合があります。 同時に表示されるエラー バナーが多くなりすぎないように、最近表示された場合は、同じエラー バナーが再び表示されません。

Example

式で結合された Label コントロールと Slider コントロールを考えてみましょう:

Label1.Text = 1/Slider1.Value

Label と Slider コントロールが数式 Label1.Text = 1/Slider1.Value でバインドされます。

スライダーの既定値は 50 です。 スライダーを 0 に移動すると、 Label1 に値が表示されなくなり、エラー バナーが表示されます。

Slider コントロールが 0 に移動したため、ゼロ除算エラーとなり、エラー バナーが表示されました。

何が起こるかを詳しく見てみましょう。

  1. スライダーを左に移動すると、 Slider1.Value プロパティが 0 に変わります。
  2. Label1.Text は自動的に再評価します。 ゼロ除算が発生し、エラーが発生します。
  3. この式では IfError はありません。 ゼロ除算エラーは、数式評価によって返されます。
  4. Label1.Text はこのエラーに対して何も表示できないので、空白の状態が表示されます。
  5. OnError が呼び出されます。 ハンドラーがないため、標準エラー バナーがエラー情報とともに表示されます。

必要に応じて、数式を Label1.Text = IfError( 1/Slider1.Value, 0 )に変更することもできます。 IfError を使用すると、エラーやエラー バナーがないことを意味します。 エラーが既に発生しているため、エラーの値を OnError から変更することはできません。 OnError では、報告方法のみが制御されます。

OnError ハンドラーを追加しても、手順 5. の前の手順には影響しませんが、エラーの報告方法は変わります。

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

トレースを生成するように設定された App.OnError 式。

この OnError ハンドラーでは、アプリ ユーザーにエラーは表示されません。 ただし、エラーは、 FirstError からのエラー情報のソースを含め、モニターのトレースに追加されます。

Slider コントロールが 0 に移動したため、ゼロ除算エラーとなりますが、エラー バナーは表示されません。

トレースと共に既定のエラー バナーも表示する場合は、トレース呼び出しの後に Error 関数を使用して、トレースが存在しなかったかのようにエラーを再スローします。

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

OnStart プロパティ

Note

OnStart プロパティを使用すると、アプリの読み込み時にパフォーマンスの問題が発生する可能性があります。 OnStart にロジックを追加する前に、次の代替手段を検討してください。

  • データをキャッシュしたり、グローバル変数を設定したりするには、可能な場合は Formulas プロパティで名前付き数式を使用します。
  • 最初に表示する画面を設定するには、Navigate の代わりに StartScreen プロパティを使用 します
  • 特定の画面が表示されたときにロジックを実行するには、画面の OnVisible プロパティを使用します。

コンテキストによっては、 OnStart プロパティが既定で無効になっている場合があります。 表示されない場合、それを使用する必要がある場合は、スイッチのアプリの詳細設定を確認して有効にします。

非ブロッキング OnStart ルールが有効になっている場合 (既定値)、 OnStart は他のアプリ ルールと同時に実行されます。 その結果:

  • OnStart で初期化された変数は、他のアプリ ルールが読み取るときに完全には初期化されない可能性があります。
  • App.OnStart または Screen.OnVisible の実行が完了する前に、特にこれらの関数の実行に時間がかかる場合は、画面をレンダリングして対話型にすることができます。

OnStart プロパティは、ユーザーがアプリを開始するときに実行されます。 このプロパティを使用して、次の操作を行います。

  • Collect 関数を使用して、コレクション内のデータを取得およびキャッシュします。
  • Set 関数を使用して、グローバル変数を設定します。

この数式は、最初の画面が表示される前に実行されます。 画面が読み込まれないため、UpdateContext 関数を使用してコンテキスト変数を設定することはできません。 ただし、 Navigate 関数を使用してコンテキスト変数を渡すことができます。

OnStart プロパティを変更した後、ツリー ビュー ペインの App オブジェクトにマウス ポインターを合わせ、省略記号 (...) を選択し、[OnStart の実行] を選択してテストします。 アプリが初めて読み込まれる場合とは異なり、既存のコレクションと変数は既に設定されています。 空のコレクションから始めるには、Collect 関数の代わりに、ClearCollect 関数を使用します。

OnStart で実行用のアプリ アイテム ショートカット メニュー

Note

  • OnStart プロパティでの Navigate 関数の使用は廃止されます。 既存のアプリは引き続き機能します。 期間限定で、アプリ設定 ([ 廃止済み] の下) で有効にすることができます。 ただし、 この方法で Navigate を使用すると、システムが最初の画面を表示する前に OnStart の実行が強制的に完了するため、アプリの読み込み遅延が発生する可能性があります。 代わりに StartScreen プロパティを使用して、表示される最初の画面を設定します。
  • 2021 年 3 月より前に作成されたアプリで、2021 年 3 月から現在の間に [オンスタート] に移動を追加した場合、廃止されたスイッチはオフになります。 Power Apps Studio でこれらのアプリを編集すると、エラーが表示されます。 このエラーをクリアするには、廃止されたスイッチをオンにします。

StartScreen プロパティ

StartScreen プロパティは、最初に表示する画面を設定します。 Power Appsは、アプリが読み込まれたときにこのプロパティを 1 回評価し、表示する画面オブジェクトを返します。 既定では、このプロパティは空で、Studio ツリー ビューの最初の画面が最初に表示されます。

StartScreen は、動作の関数は含めることができないデータ フロー プロパティです。 すべてのデータ フロー関数を使用できます。 次の機能とシグナルを使用して、最初に表示する画面を決定します。

  • アプリの起動に使用されるパラメーターを読み取る Param 関数。
  • 現在のユーザーに関する情報を読み取る User 関数。
  • LookUpFilterCountRowsMax など、データ ソースから読み取る関数。
  • コネクタを介した API 呼び出し。 呼び出しがすぐに返されるようにします。
  • ConnectionCompassApp などの信号。

Note

グローバル変数とコレクション ( OnStart で作成されたものを含む) は、 StartScreen では使用できません。 名前付き数式が使用可能であり、多くの場合、アプリ全体で数式を再利用するための優れた代替手段です。

StartScreen からエラーが返された場合、Studio ツリー ビューの最初の画面は、StartScreen が設定されていないかのように表示されます。 IfError 関数を使用してエラーをキャッチし、エラー画面にリダイレクトします。

Studio で StartScreen を変更した後、ツリー ビュー ペインの App オブジェクトにマウス ポインターを合わせ、省略記号 (...) を選択し、[StartScreen に移動] を選択してテストします。 アプリが読み込まれたかのように画面が変わります。

StartScreen に移動する

例示

Screen9

Screen9 は、アプリが起動するたびに最初に表示されます。

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

パラメーター "admin-mode" が設定されているかどうかを確認し、それを使用して HomeScreen または AdminScreen が最初に表示されるかどうかを判断します。

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

出席者がスタッフ メンバーであるかどうかを確認し、起動時に正しい画面に誘導します。

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

API 呼び出しに基づいてアプリを ForestScreen または OceanScreen に移動します。 API が失敗した場合、アプリは代わりに ErrorScreen を使用します。

StudioVersion プロパティ

StudioVersion プロパティを使用して、アプリの発行に使用した Power Apps Studio のバージョンを表示またはログに記録します。 このプロパティは、アプリが Power Apps Studio の最新バージョンで再発行されたことをデバッグして確認するときに役立ちます。

StudioVersion はテキストを返します。 このテキストの形式は時間の経過と同時に変更される可能性があるため、全体として扱い、個々の部分を抽出しません。