PowerApps の UpdateContext 関数UpdateContext function in PowerApps

現在の画面のコンテキスト変数を作成または更新します。Creates or updates context variables of the current screen.

概要Overview

UpdateContext 関数を使用すると、コンテキスト変数を作成できます。コンテキスト変数とは、ユーザーがボタンを押した回数やデータ操作の結果など、一定の情報を一時的に格納する際に使用する変数です。Use the UpdateContext function to create a context variable, which temporarily holds a piece of information, such as the number of times the user has selected a button or the result of a data operation.

コンテキスト変数のスコープは 1 画面に限定されています。このため、別の画面のコンテキスト変数を参照する数式を作成することはできません。Context variables are scoped to a screen, which means that you can't build a formula that refers to a context variable on another screen. 他のプログラミング ツールの使用経験がある方は、コンテキスト変数をローカル変数とほぼ同じものだと考えてもよいでしょう。If you've used another programming tool, you can think of a context variable as similar to a local variable. アプリ全体で使用できるグローバル変数を操作するには、Set 関数を使用します。Use the Set function to work with global variables that are available throughout your app.

PowerApps では基本的に、ユーザーがアプリを操作すると、数式が自動的に再計算されます。PowerApps are based on formulas that automatically recalculate as the user interacts with an app. しかし、コンテキスト変数には再計算が実行されません。このため、コンテキスト変数を使うと、アプリの作成や理解が難しくなることがあります。Context variables don't offer this benefit and can make your app harder to create and understand. コンテキスト変数を使用する前に、変数の利用に関するページをもう一度確認してください。Before you use a context variable, review working with variables.

説明Description

コンテキスト変数を作成または更新するには、UpdateContext 関数にレコードを 1 つ渡す必要があります。To create or update a context variable, pass a single record to the UpdateContext function. 各レコードでは、変数の名前の定義または照合に使用するデータとしてのの名前と、その変数に設定する値を指定します。In each record, specify the name of a column, which defines or matches the name of the variable, and the value to which you want to set that variable.

  • 以前に定義した変数の名前を指定した場合には、UpdateContext によって変数が指定された値に設定されます。If you specify the name of a variable that you've previously defined, UpdateContext sets the value of the variable to the value that you specify.
  • まだ存在しない変数の名前を指定した場合には、UpdateContext ではその名前の変数を作成したうえで、その変数に対して指定された値を設定します。If you specify the name of a variable that doesn't yet exist, UpdateContext creates a variable with that name and sets the value of that variable to the value that you specify.
  • 以前に変数を定義していたものの、UpdateContext の数式の中でその変数を指定しなかった場合には、その変数の値は以前と同じになります。If you've previously defined a variable but don't specify it in this particular UpdateContext formula, its value remains the same.

コンテキスト変数は、UpdateContext または Navigate 関数を使用すると暗黙的に作成されます。Context variables are implicitly created by using the UpdateContext or Navigate function. 明示的な宣言は必要ありません。There is no explicit declaration required. UpdateContextNavigate のコンテキスト変数への参照をすべて削除すると、コンテキスト変数は存在しなくなります。If you remove all the UpdateContext and Navigate references to a context variable, then that context variable will cease to exist. 変数をクリアするには、その値を Blank 関数の結果に設定します。To clear a variable set its value to the result of the Blank function.

作成環境の [ファイル] メニューの [変数] ビューで、変数の値、定義、使用について確認できます。You can see your variables' values, definitions, and uses with the Variables view under the File menu in the authoring environment.

数式でコンテキスト変数を参照するときは、その変数の列名を使用します。You reference a context variable in a formula by using the variable's column name. たとえば、UpdateContext( { ShowLogo: true } ) では、ShowLogo というコンテキスト変数を作成したうえで、値 true を設定します。For example, UpdateContext( { ShowLogo: true } ) creates a context variable named ShowLogo and sets its value to true. この関数を実行した後は、数式でこの ShowLogo という名前を指定することによって、このコンテキスト変数の値を使用できます。You can then use the value of this context variable by using the name ShowLogo in a formula. ShowLogo を画像コントロールの Visible プロパティの数式として記述した場合には、このコンテキスト変数の値が truefalse のどちらであるかに応じてコントロールの表示と非表示を切り替えることができます。You can write ShowLogo as the formula for the Visible property of an image control and show or hide that control based on whether the value of the context variable is true or false.

具体例はこのトピックで後ほど紹介しますが、コンテキスト変数には以下をはじめとするさまざまな情報を格納できます。As the examples later in this topic show, context variables can hold several kinds of information, including these:

  • 単一の値a single value
  • レコードa record
  • テーブルa table
  • オブジェクト参照an object reference
  • 数式の結果any result from a formula

アプリが終了するまで、コンテキスト変数の値は保持されます。A context variable holds its value until the app is closed. コンテキスト変数を定義して、特定の画面についてその値を設定した場合には、ユーザーが別の画面に切り替えた場合でも、設定した情報がそのまま維持されます。If you define a context variable and set its value on a particular screen, that information remains intact even if the user switches to a different screen. アプリを終了すると、コンテキスト変数の値は失われ、アプリが再読み込みされたときに再作成されます。Once the app is closed, the context variable's value will be lost and must be recreated when the app is loaded again.

コンテキスト変数はいずれも、そのスコープが 1 画面だけにとどまります。Every context variable is scoped to a screen. ある画面についてコンテキスト変数を定義し、その値を別の画面から変更する場合には、 Navigate 関数に基づく数式を作成する必要があります。If you want to define a context variable on one screen and modify that variable from another screen, you must build a formula that's based on the Navigate function. または、グローバル変数を使用します。Or use a global variable.

UpdateContext には戻り値がないため、動作の数式 の中でのみ使用できます。UpdateContext has no return value, and you can use it only within a behavior formula.

構文Syntax

UpdateContext( UpdateRecord )UpdateContext( UpdateRecord )

  • UpdateRecord – 必須。UpdateRecord – Required. 1 つ以上の列の名前と、その列の値を含むレコード。A record that contains the name of at least one column and a value for that column. 指定した列と値それぞれについて、コンテキスト変数が作成または更新されます。A context variable is created or updated for each column and value that you specify.

UpdateContext( { ContextVariable1: Value1 [, ContextVariable2: Value2 [, ... ] ] } )UpdateContext( { ContextVariable1: Value1 [, ContextVariable2: Value2 [, ... ] ] } )

  • ContextVariable1 - 必須。ContextVariable1 - Required. 作成または更新するコンテキスト変数の名前。The name of a context variable to create or update.
  • Value1 - 必須。Value1 - Required. コンテキスト変数に割り当てる値。The value to assign to the context variable.
  • ContextVariable2: Value2, ... - 省略可能。ContextVariable2: Value2, ... - Optional. 追加で作成または更新するコンテキスト変数とその値。Additional context variables to create or update and their values.

Examples

数式Formula 説明Description 結果Result
UpdateContext( { Counter: 1 } )UpdateContext( { Counter: 1 } ) コンテキスト変数 Counter を作成または変更し、その値を 1 に設定します。Creates or modifies the context variable Counter, setting its value to 1. Counter に値 1 が設定されます。Counter has the value 1. この変数は、数式で名前 Counter を使用することによって参照できます。You can reference that variable by using the name Counter in a formula.
UpdateContext( { Counter: 2 } )UpdateContext( { Counter: 2 } ) 前の例のコンテキスト変数 Counter の値を 2 に設定します。Sets the value of the Counter context variable from the previous example to 2. Counter に値 2 が設定されます。Counter has the value 2.
UpdateContext( { Name: "Lily", Score: 10 } )UpdateContext( { Name: "Lily", Score: 10 } ) NameScore の 2 つのコンテキスト変数を作成または変更し、値をそれぞれ Lily10 に設定します。Creates or modifies the context variables Name and Score, setting their values to Lily and 10 respectively. Name に値 LilyScore に値 10 が設定されます。Name has the value Lily, and Score has the value 10.
UpdateContext( { Person: { Name: "Milton", Address: "1 Main St" } } )UpdateContext( { Person: { Name: "Milton", Address: "1 Main St" } } ) コンテキスト変数 Person を作成または変更し、その値をレコードに設定します。Creates or modifies the context variable Person, setting its value to a record. このレコードには、NameAddress の 2 つの列が存在します。The record contains two columns, named Name and Address. Name 列の値は MiltonAddress 列の値は 1 Main St です。The value of the Name column is Milton, and the value of the Address column is 1 Main St. Person にレコード { Name: "Milton", Address: "1 Main St" } } の値が設定されます。Person has the value of record { Name: "Milton", Address: "1 Main St" } }.

このレコード全体を参照する場合には、名前 Person を使用します。このレコードの個別の列を参照する場合には、Person.Name または Person.Address を使用します。Reference this record as a whole with the name Person, or reference an individual column of this record with Person.Name or Person.Address.
UpdateContext( { Person: Patch( Person, {Address: "2 Main St" } ) } )UpdateContext( { Person: Patch( Person, {Address: "2 Main St" } ) } ) Patch 関数と連携してコンテキスト変数 PersonAddress 列の値を 2 Main St に設定します。Works with the Patch function to update the Person context variable by setting the value of the Address column to 2 Main St. Person にレコード { Name: "Milton", Address: "2 Main St" } } の値が設定されます。Person now has the value of record { Name: "Milton", Address: "2 Main St" } }.

ステップバイステップの例Step-by-step example

  1. 既定の画面に Source という名前を付けてから、画面を 1 つ追加して、その画面の名前を Target に設定します。Name the default screen Source, add another screen, and name it Target.
  2. Source 画面にボタンを 2 つ追加し、その一方の Text プロパティに「English」、もう一方に「Spanish」を、それぞれ入力します。On the Source screen, add two buttons, and set their Text properties so that one says English and the other says Spanish.
  3. English ボタンの OnSelect プロパティに、次の式を設定します。Set the OnSelect property of the English button to this expression:
    Navigate(Target, ScreenTransition.Fade, {Language:"English"})Navigate(Target, ScreenTransition.Fade, {Language:"English"})
  4. Spanish ボタンの OnSelect プロパティを次の数式に設定します。Set the OnSelect property of the Spanish button to this expression:
    Navigate(Target, ScreenTransition.Fade, {Language:"Spanish"})Navigate(Target, ScreenTransition.Fade, {Language:"Spanish"})
  5. Target 画面にラベルを追加し、その Text プロパティを次の式に設定します。On the Target screen, add a label, and set its Text property to this expression:
    If(Language="English", "Hello!", "Hola!")If(Language="English", "Hello!", "Hola!")
  6. Target 画面の [挿入] タブで [図形] を選択し、戻る矢印を選択します。On the Target screen, select Shapes on the Insert tab, and then select the Back arrow.
  7. 戻る矢印の OnSelect プロパティを次の式に設定します。Set the Back arrow's OnSelect property to this formula:
    Navigate(Source, ScreenTransition.Fade)Navigate(Source, ScreenTransition.Fade)
  8. Source 画面で F5 キーを押し、いずれかの言語のボタンを選択します。From the Source screen, press F5, and then select the button for either language.

    Target 画面に、選択した場ボタンに対応する言語のラベルが表示されます。On the Target screen, the label appears in the language that corresponds to the button that you selected.

  9. 戻る矢印を選択して Source 画面に戻り、もう一方の言語のボタンを選択します。Select the Back arrow to return to the Source screen, and then select the button for the other language.

    Target 画面に、選択した場ボタンに対応する言語のラベルが表示されます。On the Target screen, the label appears in the language that corresponds to the button that you selected.

  10. Esc キーを押して既定のワークスペースに戻ります。Press Esc to return to the default workspace.

その他の例Another example