Power Apps でのキャンバスアプリ変数についてUnderstand canvas-app variables in Power Apps

Visual Basic や JavaScript などの別のプログラミング ツールを使ってきた方は、変数はどこにあるのかという疑問を抱くことでしょう。If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? Power Apps は少し異なり、別のアプローチが必要です。Power Apps is a little different and requires a different approach. キャンバス アプリをビルドする際に、変数の説明に進む代わりに、Excel で何をしようとしているかを考えてください。Instead of reaching for a variable when you build a canvas app, ask yourself: What would I do in Excel?

他のツールでは、明示的に計算を実行し、その結果を変数に格納していたことでしょう。In other tools, you may have explicitly performed a calculation and stored the result in a variable. ただし、Power Apps と Excel では、入力データの変化に応じて自動的に数式が再計算されるので、通常は変数を作成および更新する必要はありません。However, Power Apps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. 可能な限りこの方法に従うことで、アプリをより簡単に作成、理解、維持することができます。By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

場合によっては、Power Apps で変数を使用する必要があります。これにより、動作の数式を追加することで Excel のモデルが拡張されます。In some cases, you'll need to use variables in Power Apps, which extends Excel's model by adding behavior formulas. これらの数式が実行されるのは、ユーザーがボタンを選択したときなどです。These formulas run when, for example, a user selects a button. 動作の数式の中では、他の数式で使用する変数を設定すると便利なことがよくあります。Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

一般的には、変数の使用を避けてください。In general, avoid using variables. ただし、変数を使わないと目的の動作が得られないこともあります。But sometimes only a variable can enable the experience you want. 変数は、値を設定する関数に表示されるときに、暗黙的に作成および型指定されます。Variables are implicitly created and typed when they appear in functions that set their values.

Excel を Power Apps に変換するTranslate Excel into Power Apps

ExcelExcel

それでは、Excel のしくみを確認しましょう。Let's review how Excel works. セルには、数値や文字列などの値、または他のセルの値に基づく数式を含めることができます。A cell can contain a value, such as a number or a string, or a formula that's based on the values of other cells. ユーザーがセルに別の値を入力すると、新しい値に応じてすべての数式が自動的に再計算されます。After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. この動作を実現するためにプログラミングは必要ありません。You don't have to do any programming to enable this behavior.

次の例では、セルA3が数式A1 + A2に設定されています。In the following example, cell A3 is set to the formula A1+A2. A1またはA2が変更された場合、 A3は変更を反映するために自動的に再計算されます。If A1 or A2 changes, A3 automatically recalculates to reflect the change. この動作では、数式自体の外部でコーディングを行う必要はありません。This behavior requires no coding outside of the formula itself.

Excel の2つの数値の合計を再計算するアニメーション

Excel に変数がありません。Excel doesn't have variables. 数式が含まれるセルの値は入力内容に基づいて変化しますが、数式の結果を記憶してそれをセルや他の場所に格納する方法はありません。The value of a cell that contains a formula changes based on its input, but there's no way to remember the result of a formula and store it in a cell or anywhere else. セルの値を変更すると、スプレッドシート全体が変更される可能性があり、それ以前に計算された値はすべて失われます。If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. Excel のユーザーは、セルをコピーして貼り付けることができますが、それはユーザーが手動で制御するものであり、数式では不可能です。An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPower Apps

Power Apps で作成したアプリは、Excel とほぼ同じように動作します。Apps that you create in Power Apps behave very much like Excel. セルを更新する代わりに、画面上の任意の場所にコントロールを追加し、数式で使用するために名前を付けることができます。Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

たとえば、 TextInput1TextInput2という名前の ラベル コントロールと、 Label1という名前の2つの テキスト入力 コントロールを追加することで、アプリで Excel の動作をレプリケートできます。For example, you can replicate the Excel behavior in an app by adding a Label control, named Label1, and two Text input controls, named TextInput1 and TextInput2. その後、 Label1Text プロパティをTextInput1 + TextInput2に設定すると、 TextInput1TextInput2に含まれるすべての数値の合計が自動的に表示されます。If you then set the Text property of Label1 to TextInput1 + TextInput2, it will always show the sum of whatever numbers are in TextInput1 and TextInput2 automatically.

Power Apps での2つの数値の合計の計算

Label1コントロールが選択され、画面の上部にある数式バーにその テキスト 式が表示されていることに注意してください。Notice that the Label1 control is selected, showing its Text formula in the formula bar at the top of the screen. ここで、数式が TextInput1 + TextInput2 となっていることがわかります。Here we find the formula TextInput1 + TextInput2. Excel ブック内のセル間に依存関係が作成されるのと同様に、この数式によってこれらのコントロール間に依存関係が作成されます。This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. TextInput1の値を変更してみましょう。Let's change the value of TextInput1:

Power Apps の2つの数値の合計を計算するアニメーション

Label1の数式が自動的に再計算され、新しい値が表示されます。The formula for Label1 has been automatically recalculated, showing the new value.

Power Apps では、式を使用して、コントロールのプライマリ値だけでなく、書式設定などのプロパティも決定できます。In Power Apps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. 次の例では、ラベルの Color プロパティに設定された数式により、負の値は自動的に赤で表示されます。In the next example, a formula for the Color property of the label will automatically show negative values in red. If 関数は Excel と非常によく似ています。The If function should look very familiar from Excel:

If( Value(Label1.Text) < 0, Red, Black )

条件付き書式のアニメーション

数式は、さまざまなシナリオで利用できます。You can use formulas for a wide variety of scenarios:

  • デバイスの GPS を使用した場合、Location.LatitudeLocation.Longitude を使用する数式によって、マップ コントロールに現在の位置を表示できます。By using your device's GPS, a map control can display your current location with a formula that uses Location.Latitude and Location.Longitude. 移動すると、マップによって位置が自動的に追跡されます。As you move, the map will automatically track your location.
  • 他のユーザーがデータ ソースを更新できます。Other users can update data sources. たとえば、チームの他のメンバーが SharePoint リスト内の項目を更新する場合があります。For example, others on your team might update items in a SharePoint list. データ ソースを更新すると、依存するすべての数式が自動的に再計算され、更新されたデータが反映されます。When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. この例をさらに進めて、ギャラリーの Items プロパティを数式 Filter( SharePointList ) に設定すると、新しくフィルター処理されたレコード セットが自動的に表示されます。Furthering the example, you might set a gallery's Items property to the formula Filter( SharePointList ), which will automatically display the newly filtered set of records.

利点Benefits

数式をしたアプリの作成には多くの利点があります。Using formulas to build apps has many advantages:

  • Excel がわかっている場合は、Power Apps がわかっています。If you know Excel, you know Power Apps. モデルと数式の言語は同じです。The model and formula language are the same.
  • 他のプログラミング ツールを使用したことがある場合は、これらの例を実現するためにどれだけの量のコードが必要になるかを考えてみてください。If you've used other programming tools, think about how much code would be required to accomplish these examples. Visual Basic では、各テキスト入力コントロールの変更イベント用にイベント ハンドラーを記述する必要があります。In Visual Basic, you'd need to write an event handler for the change event on each text-input control. このそれぞれで計算を実行するコードは冗長であり、不一致が生じる可能性があります。また、共通のサブルーチンを記述することが必要になる場合もあります。The code to perform the calculation in each of these is redundant and could get out of sync, or you'd need to write a common subroutine. Power Apps では、1行の数式ですべてを実行していました。In Power Apps, you accomplished all of that with a single, one-line formula.
  • ここで、 Label1のテキストがどこから来ているかを理解するために、" テキスト " プロパティの式を正確に調べることができます。To understand where Label1's text is coming from, you know exactly where to look: the formula in the Text property. ほかに、このコントロールのテキストを変更する方法はありません。There's no other way to affect the text of this control. 従来のプログラミング ツールでは、プログラムのどこからでも、任意のイベント ハンドラーまたはサブルーチンでラベルの値を変更できました。In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. これにより、変数がいつどこで変更されたかを追跡するのが難しくなります。This can make it hard to track down when and where a variable was changed.
  • ユーザーは、スライダー コントロールを変更した後に考えを変えた場合、スライダーを元の値に戻すことができます。If the user changes a slider control and then changes their mind, they can change the slider back to its original value. アプリでは以前と変わらず同じコントロールが表示されるため、まるで何も変わっていないかのように見えます。And it's as if nothing had ever changed: the app shows the same control values as it did before. "what if" を試したり要求したりした場合でも、Excel の場合と同様、派生的な問題は発生しません。There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

一般的に、数式を使用して効果を得ることができれば楽になります。In general, if you can achieve an effect by using a formula, you'll be better off. Power Apps で数式エンジンを使用できるようにします。Let the formula engine in Power Apps work for you.

変数を使用するタイミングを把握するKnow when to use variables

単純な加算器に変更を加えて、累計機能を備えた昔ながらの計算機のように動作するようにしましょう。Let's change our simple adder to act like an old-fashioned adding machine, with a running total. [Add] ボタンを選択すると、数値が累計に加算されます。If you select an Add button, you'll add a number to the running total. [Clear] ボタンを選択すると、累計が 0 にリセットされます。If you select a Clear button, you'll reset the running total to zero.

'95'5cDisplay DescriptionDescription
アプリには、テキスト入力コントロール、ラベル、2つのボタンがあり App with a Text input control, a label, and two buttons アプリが開始されると、実行中の合計は0になります。When the app starts, the running total is 0.

赤い点は、ユーザーが77を入力したテキスト入力ボックスにユーザーの指を表します。The red dot represents the user's finger in the text-input box, where the user enters 77.
テキスト入力コントロールに77が含まれており、[追加] ボタンが押されています。 ユーザーは [追加] ボタンを選択します。The user selects the Add button.
合計が77で、別の77が追加されています 77が累計に追加されます。77 is added to the running total.

ユーザーはもう一度 [追加] ボタンを選択します。The user selects the Add button again.
合計は、クリアされる前の154です。 77はもう一度累計に追加され、結果は154になります。77 is again added to the running total, resulting in 154.

ユーザーは [クリア] ボタンを選択します。The user selects the Clear button.
合計がクリアされます。 実行中の合計が0にリセットされます。The running total is reset to 0.

ここで作成する計算機では、Excel に存在しない機能、つまりボタンを使用しています。Our adding machine uses something that doesn't exist in Excel: a button. このアプリでは、数式だけを使用して累計を計算することはできません。なぜなら、値はユーザーが行う一連の操作によって異なるからです。In this app, you can't use only formulas to calculate the running total because its value depends on a series of actions that the user takes. 代わりに、累計を手動で記録して更新する必要があります。Instead, our running total must be recorded and updated manually. ほとんどのプログラミング ツールでは、この情報を "変数" に格納します。Most programming tools store this information in a variable.

場合によっては、アプリが目的の動作を行うために変数が必要になります。You'll sometimes need a variable for your app to behave the way you want. ただし、このアプローチには注意が必要です。But the approach comes with caveats:

  • 累計を手動で更新する必要があります。You must manually update the running total. この処理は自動再計算では実行されません。Automatic recalculation won't do it for you.
  • 累計は、他のコントロールの値に基づいて計算できません。The running total can no longer be calculated based on the values of other controls. 累計は、ユーザーが [Add] ボタンを選択した回数と、選択したときにテキスト入力コントロールに格納されていた値に基づきます。It depends on how many times the user selected the Add button and what value was in the text-input control each time. ユーザーが 77 を入力した後で [Add] を 2 回選択したのか、加算する値に 24 と 130 を指定したのか、Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? 合計が 154 になった後でその違いを見分けることはできません。You can't tell the difference after the total has reached 154.
  • 合計に対する変更は、異なる経路から生じている可能性があります。Changes to the total can come from different paths. この例では、 [Add] ボタンでも [Clear] ボタンでも合計を更新できます。In this example, both the Add and Clear buttons can update the total. アプリが期待どおりに動作しない場合、どちらかのボタンに問題の原因があるのでしょうか。If the app doesn't behave the way you expect, which button is causing the problem?

グローバル変数を使用するUse a global variable

計算機を作成するには、累計を保持する変数が必要です。To create our adding machine, we require a variable to hold the running total. Power Apps で使用する最も簡単な変数は、グローバル変数です。The simplest variables to work with in Power Apps are global variables.

グローバル変数は次のように機能します。How global variables work:

  • Set 関数を使用して、グローバル変数の値を設定します。You set the value of the global variable with the Set function. Set( MyVar, 1 ) とすることで、グローバル変数 MyVar の値を 1 に設定します。Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • Set 関数とともに使用した名前を参照すると、グローバル変数を使用できます。You use the global variable by referencing the name used with the Set function. この場合、MyVar1 を返します。In this case, MyVar will return 1.
  • グローバル変数は、文字列、数値、レコード、テーブルなど、すべての値を保持できます。Global variables can hold any value, including strings, numbers, records, and tables.

それでは、グローバル変数を使用して計算機を作り直してみましょう。Let's rebuild our adding machine by using a global variable:

  1. TextInput1 という名前のテキスト入力コントロールと、Button1 および Button2 という名前の 2 つのボタンを追加します。Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text プロパティを "Add" に設定し、Button2Text プロパティを "Clear" に設定します。Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. ユーザーが [Add] ボタンを選択するたびに累計を更新するために、 OnSelect プロパティを次の数式に設定します。To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    Set (RunningTotal、RunningTotal、TextInput1)Set( RunningTotal, RunningTotal + TextInput1 )

    この数式が単に存在する場合は、 + 演算子により、数値を保持するグローバル変数としてrunningtotalが設定されます。The mere existence of this formula establishes RunningTotal as a global variable that holds a number because of the + operator. アプリの任意の場所でRunningtotalを参照できます。You can reference RunningTotal anywhere in the app. ユーザーがこのアプリを開くたびに、 Runningtotalの初期値は空白になります。Whenever the user opens this app, RunningTotal has an initial value of blank.

    ユーザーが最初に [追加] ボタンを選択し、実行 を 設定 すると、 runningtotalrunningtotal + TextInput1の値に設定されます。The first time that a user selects the Add button and Set runs, RunningTotal is set to the value RunningTotal + TextInput1.

    [追加] ボタンの OnSelect プロパティが Set 関数に設定されています。

  4. ユーザーが [Clear] ボタンを選択するたびに累計を 0 に設定するために、 OnSelect プロパティを次の数式に設定します。To set the running total to 0 whenever the user selects the Clear button, set its OnSelect property to this formula:

    Set( RunningTotal, 0 )Set( RunningTotal, 0 )

    Clear ボタンの OnSelect プロパティが Set 関数に設定されています

  5. ラベル コントロールを追加し、 Text プロパティを RunningTotal に設定します。Add a Label control, and set its Text property to RunningTotal.

    この数式は自動的に再計算され、ユーザーが選択したボタンに基づいて変更される RunningTotal の値が表示されます。This formula will automatically be recalculated and show the user the value of RunningTotal as it changes based on the buttons that the user selects.

    ラベルの Text プロパティは、変数の名前に設定されます。

  6. アプリをプレビューします。前述のように計算機が完成しました。Preview the app, and we have our adding machine as described above. テキスト ボックスに数値を入力して [追加] ボタンを数回クリックします。Enter a number in the text box and press the Add button a few times. 準備ができたら、Esc キーを押して作成環境に戻ります。When ready, return to the authoring experience using the Esc key.

    テキスト入力コントロールには値が含まれ、ラベルには累計が含まれます。

  7. グローバル変数の値を表示するには、 [ファイル] メニューを選択し、左側のペインで [変数] を選択します。To show the global variable's value, select the File menu, and select Variables in the left-hand pane.

    [ファイル] メニューの [変数] オプション

  8. 変数が定義されて使用されているすべての場所を表示するには、変数を選択します。To show all the places where the variable is defined and used, select it.

    変数が使用されている場所の一覧

変数の種類Types of variables

Power Apps には、次の3種類の変数があります。Power Apps has three types of variables:

変数の種類Variables type 適用範囲Scope DescriptionDescription を確立する関数Functions that establish
グローバル変数Global variables AppApp 使い方が最も単純です。Simplest to use. 数値、テキスト文字列、ブール値、レコード、テーブルなどを保持し、アプリ内のどこからでも参照できます。Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. SetSet
コンテキスト変数Context variables 画面Screen 他の言語のプロシージャにパラメーターを渡す場合など、画面に値を渡すのに最適です。Great for passing values to a screen, much like parameters to a procedure in other languages. は、1つの画面からのみ参照できます。Can be referenced from only one screen. UpdateContextUpdateContext
NavigateNavigate
コレクションCollections AppApp アプリ内のどこからでも参照できるテーブルを保持します。Holds a table that can be referenced from anywhere in the app. 全体として設定するのではなく、テーブルのコンテンツごとに変更できます。Allows the contents of the table to be modified rather than being set as a whole. 後で使用するためにローカル デバイスに保存できます。Can be saved to the local device for later use. CollectCollect
ClearCollectClearCollect

変数の作成と削除Create and remove variables

SetupdatecontextNavigatecollect、またはclearcollect関数に出現すると、すべての変数が暗黙的に作成されます。All variables are created implicitly when they appear in a Set, UpdateContext, Navigate, Collect, or ClearCollect function. 変数とその型を宣言するには、アプリ内の任意の場所で、これらの関数のいずれかにそれを含める必要があります。To declare a variable and its type, you need only include it in any of these functions anywhere in your app. これらの関数は変数を作成しません。変数に値を入力するだけです。None of these functions create variables; they only fill variables with values. 他のプログラミングツールの場合と同じように、変数を明示的に宣言することはできません。また、すべての型指定は使用法から暗黙的に宣言されます。You never declare variables explicitly as you might in another programming tool, and all typing is implicit from usage.

たとえば、 Onselect式がSet (X, 1) と等しいボタンコントロールがあるとします。For example, you might have a button control with an OnSelect formula equal to Set( X, 1 ). この数式は、 Xを数値型の変数として設定します。This formula establishes X as a variable with a type of number. 数式の中でXを数値として使用できます。アプリを開いた後、ボタンを選択する前に、その変数の値は空白になります。You can use X in formulas as a number, and that variable has a value of blank after you open the app but before you select the button. このボタンを選択すると、 Xの値が1になります。When you select the button, you give X the value of 1.

別のボタンを追加し、そのOnselectプロパティを設定 (X、"Hello") に設定した場合、型 (テキスト文字列) が前のset (number) の型と一致しないため、エラーが発生します。If you added another button and set its OnSelect property to Set( X, "Hello" ), an error would occur because the type (text string) doesn't match the type in the previous Set (number). 変数のすべての暗黙的な定義は、型に同意する必要があります。All implicit definitions of the variable must agree on type. ここでも、数式にXと記述したのは、これらの数式のいずれかが実際に実行されていたためではなかったからです。Again, all this happened because you mentioned X in formulas, not because any of those formulas had actually run.

変数を削除するには、変数を暗黙的に設定するSetupdatecontextNavigatecollect、またはclearcollect関数をすべて削除します。You remove a variable by removing all the Set, UpdateContext, Navigate, Collect, or ClearCollect functions that implicitly establish the variable. これらの関数がない場合、変数は存在しません。Without these functions, the variable doesn't exist. また、変数への参照は、エラーの原因になるため、削除する必要があります。You must also remove any references to the variable because they will cause an error.

変数の有効期間と初期値Variable lifetime and initial value

すべての変数は、アプリの実行中にメモリに保持されます。All variables are held in memory while the app runs. アプリが閉じられると、変数に保持されていた値は失われます。After the app closes, the values that the variables held are lost.

Patch関数またはCollect関数を使用して、データソースに変数の内容を格納できます。You can store the contents of a variable in a data source by using the Patch or Collect functions. SaveData関数を使用して、ローカルデバイスのコレクションに値を格納することもできます。You can also store values in collections on the local device by using the SaveData function.

ユーザーがアプリを開くと、すべての変数の初期値は空白になります。When the user opens the app, all variables have an initial value of blank.

読み取り (変数を)Reading variables

変数の名前を使用して、その値を読み取ります。You use the variable's name to read its value. たとえば、次の式を使用して変数を定義できます。For example, you can define a variable with this formula:

Set( Radius, 12 )

次に、数値を使用できる場所であればどこにでもRadiusを使用でき、 12に置き換えられます。Then you can simply use Radius anywhere that you can use a number, and it will be replaced with 12:

Pi() * Power( Radius, 2 )

コンテキスト変数にグローバル変数またはコレクションと同じ名前を指定すると、コンテキスト変数が優先されます。If you give a context variable the same name as a global variable or a collection, the context variable takes precedence. ただし、あいまいさを解消する演算子 @ [Radius] を使用する場合は、グローバル変数またはコレクションを参照できます。However, you can still reference the global variable or collection if you use the disambiguation operator @[Radius].

コンテキスト変数を使用するUse a context variable

グローバル変数の代わりにコンテキスト変数を使用した計算機の作成方法を説明します。Let's look at how our adding machine would be created using a context variable instead of a global variable.

コンテキスト変数のしくみは次のとおりです。How context variables work:

  • コンテキスト変数を暗黙的に確立および設定するには、 Updatecontext 関数または Navigate 関数を使用します。You implicitly establish and set context variables by using the UpdateContext or Navigate function. アプリが起動すると、すべてのコンテキスト変数の初期値は空白になります。When the app starts, the initial value of all context variables is blank.
  • コンテキスト変数は、レコードを使用して更新します。You update context variables with records. 他のプログラミング ツールでは、一般的に、"x = 1" のように、代入には "=" を使用します。In other programming tools, you commonly use "=" for assignment, as in "x = 1". コンテキスト変数の場合は、代わりに { x: 1 } を使用します。For context variables, use { x: 1 } instead. コンテキスト変数を使用する場合は、record 構文を使用せずに名前を直接使用します。When you use a context variable, use its name directly without the record syntax.
  • Navigate 関数を使用して画面を表示する場合は、コンテキスト変数を設定することもできます。You can also set a context variable when you use the Navigate function to show a screen. 画面がプロシージャまたはサブルーチンの一種であると考えられる場合、この方法は、他のプログラミングツールでのパラメーターの引き渡しに似ています。If you think of a screen as a kind of procedure or subroutine, this approach resembles parameter passing in other programming tools.
  • Navigate を除き、コンテキスト変数は、名前を取得する場所である単一の画面のコンテキストに制限されます。Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. このコンテキスト以外でコンテキスト変数を使用または設定することはできません。You can't use or set them outside of this context.
  • コンテキスト変数では、文字列、数値、レコード、テーブルなど、任意の値を保持できます。Context variables can hold any value, including strings, numbers, records, and tables.

それでは、コンテキスト変数を使用して計算機を作り直してみましょう。Let's rebuild our adding machine by using a context variable:

  1. TextInput1 という名前のテキスト入力コントロールと、Button1 および Button2 という名前の 2 つのボタンを追加します。Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text プロパティを "Add" に設定し、Button2Text プロパティを "Clear" に設定します。Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. ユーザーが [Add] ボタンを選択するたびに累計を更新するために、 OnSelect プロパティを次の数式に設定します。To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    UpdateContext ({RunningTotal: RunningTotal + TextInput1})UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    この数式が単に存在する場合は、 + 演算子により、数値を保持するコンテキスト変数としてrunningtotalが設定されます。The mere existence of this formula establishes RunningTotal as a context variable that holds a number because of the + operator. この画面の任意の場所で、 Runningtotalを参照できます。You can reference RunningTotal anywhere in this screen. ユーザーがこのアプリを開くたびに、 Runningtotalの初期値は空白になります。Whenever the user opens this app, RunningTotal has an initial value of blank.

    ユーザーが初めて [Add] ボタンと updatecontext を選択したときに、 runningtotalrunningtotal + TextInput1の値に設定されます。The first time that the user selects the Add button and UpdateContext runs, RunningTotal is set to the value RunningTotal + TextInput1.

    [追加] ボタンの OnSelect プロパティ

  4. ユーザーが [Clear] ボタンを選択するたびに累計を 0 に設定するために、 OnSelect プロパティを次の数式に設定します。To set the running total to 0 whenever the user selects the Clear button, set its OnSelect property to this formula:

    UpdateContext( { RunningTotal: 0 } )UpdateContext( { RunningTotal: 0 } )

    ここでも、 UpdateContext を数式 UpdateContext( { RunningTotal: 0 } ) で使用します。Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

    Clear ボタンの OnSelect プロパティ

  5. ラベル コントロールを追加し、 Text プロパティを RunningTotal に設定します。Add a Label control, and set its Text property to RunningTotal.

    この数式は自動的に再計算され、ユーザーが選択したボタンに基づいて変更される RunningTotal の値が表示されます。This formula will automatically be recalculated and show the user the value of RunningTotal as it changes based on the buttons that the user selects.

    ラベルの Text プロパティ

  6. アプリをプレビューします。前述のように計算機が完成しました。Preview the app and we have our adding machine as described above. テキスト ボックスに数値を入力して [追加] ボタンを数回クリックします。Enter a number in the text box and press the Add button a few times. 準備ができたら、Esc キーを押して作成環境に戻ります。When ready, return to the authoring experience using the Esc key.

    テキスト入力コントロールに値が表示され、ラベルに "累計" が表示されます。

  7. 画面に移動する際にコンテキスト変数の値を設定できます。You can set the value of a context variable while navigating to a screen. これはある画面から別の画面に "コンテキスト" または "パラメーター" を渡すのに役立ちます。This is useful for passing "context" or "parameters" from one screen to another. この手法をデモンストレーションするには、画面を挿入し、ボタンを挿入して、そのOnselectプロパティを次の数式に設定します。To demonstrate this technique, insert a screen, insert a button, and set its OnSelect property to this formula:

    Navigate( Screen1, None, { RunningTotal: -1000 } )Navigate( Screen1, None, { RunningTotal: -1000 } )

    ボタンの OnSelect プロパティ

    Alt キーを押したまま、このボタンを選択してScreen1を表示し、コンテキスト変数runningtotalを-1000 に設定します。Hold down the Alt key while you select this button to both show Screen1 and set the context variable RunningTotal to -1000.

    Screen1 が開かれています

  8. コンテキスト変数の値を表示するには、 [ファイル] メニューを選択し、左側のペインで [変数] を選択します。To show the value of the context variable, select the File menu, and then select Variables in the left-hand pane.

    [ファイル] メニューの [変数] オプション

  9. コンテキスト変数が定義および使用されている場所を表示するには、コンテキスト変数を選択します。To show where the context variable is defined and used, select it.

    変数が使用されている場所の一覧

コレクションを使用するUse a collection

最後に、コレクションを使用した計算機の作成方法を説明します。Finally, let's look at creating our adding machine with a collection. コレクションは、変更が容易なテーブルを保持しているため、この計算機に値が入力されたときに、それぞれの値を "紙テープ" に記録するようにします。Since a collection holds a table that is easy to modify, we will make this adding machine keep a "paper tape" of each value as they are entered.

コレクションのしくみは次のとおりです。How collections work:

  • コレクションを作成および設定するには、 ClearCollect 関数を使用します。Create and set collections by using the ClearCollect function. 代わりに Collect 関数を使用できますが、実質的には、古い変数を置き換えるのではなく別の変数が必要になります。You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • コレクションは一種のデータ ソース、すなわちテーブルです。A collection is a kind of data source and, therefore, a table. コレクションの単一の値にアクセスするには、 First 関数を使用し、結果のレコードから 1 つのフィールドを抽出します。To access a single value in a collection, use the First function, and extract one field from the resulting record. ClearCollect で単一の値を使用した場合、これは次の例のように Value フィールドになります。If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( VariableName ).ValueFirst( VariableName ).Value

それでは、コレクションを使用して計算機を作り直してみましょう。Let's recreate our adding machine by using a collection:

  1. TextInput1 という名前の テキスト入力 コントロールと、Button1 および Button2 という名前の 2 つのボタンを追加します。Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Button1Text プロパティを "Add" に設定し、Button2Text プロパティを "Clear" に設定します。Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. ユーザーが [Add] ボタンを選択するたびに累計を更新するために、 OnSelect プロパティを次の数式に設定します。To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    Collect( PaperTape, TextInput1.Text )Collect( PaperTape, TextInput1.Text )

    この数式が単に存在する場合、テキスト文字列の単一列テーブルを保持するコレクションとして用紙テープが設定されます。The mere existence of this formula establishes PaperTape as a collection that holds a single-column table of text strings. このアプリの任意の場所で、用紙のテープを参照できます。You can reference PaperTape anywhere in this app. ユーザーがこのアプリを開くたびに、用紙カセットは空のテーブルになります。Whenever a user opens this app, PaperTape is an empty table.

    この数式を実行すると、コレクションの末尾に新しい値が追加されます。When this formula runs, it adds the new value to the end of the collection. 1つの値を追加しているので、 Collectによって単一列テーブルに自動的に配置され、列の名前は value になります。このは後で使用します。Because we're adding a single value, Collect automatically places it in a single-column table, and the column's name is Value, which you'll use later.

    [追加] ボタンの OnSelect プロパティ

  4. ユーザーが [クリア] ボタンを選択したときに用紙のテープを消去するには、 onselect プロパティを次の数式に設定します。To clear the paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

    Clear ボタンの OnSelect プロパティ

  5. 累計を表示するために、ラベルを追加し、 Text プロパティを次の数式に設定します。To display the running total, add a label, and set its Text property to this formula:

    Sum( PaperTape, Value )Sum( PaperTape, Value )

    ラベルの Text プロパティ

  6. 計算機を実行するために、F5 キーを押してプレビューを開き、テキスト入力コントロールに数値を入力して、ボタンを選択します。To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

    テキスト入力コントロールに値が表示され、ラベルに累計が示されます。

  7. 既定のワークスペースに戻るには、Esc キーを押します。To return to the default workspace, press the Esc key.

  8. 紙テープを表示するには、データ テーブル コントロールを挿入し、その Items プロパティを次の数式に設定します。To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    右側のウィンドウで、 [値] 列を選択して表示します。In the right-hand pane, select the Value column to show it.

    コレクションに追加された値を示すデータテーブル

  9. コレクション内の値を確認するために、 [ファイル] メニューの [コレクション] を選択します。To see the values in your collection, select Collections on the File menu.

    用紙テープコレクションのプレビュー

  10. コレクションを格納および取得するには、2つのボタンコントロールを追加し、そのTextプロパティを読み込ん保存するように設定します。To store and retrieve your collection, add two additional button controls, and set their Text properties to Load and Save. Loadボタンのonselectプロパティを次の数式に設定します。Set the OnSelect property of the Load button to this formula:

    Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )

    LoadDataによって格納された値がコレクションの末尾に追加されるため、まずコレクションをクリアする必要があります。You need to clear the collection first because LoadData will append the stored values to the end of the collection.

    [読み込み] ボタンの OnSelect プロパティ

  11. [保存] ボタンのonselectプロパティを次の数式に設定します。Set the OnSelect property of the Save button to this formula:

    SaveData( PaperTape, "StoredPaperTape" )SaveData( PaperTape, "StoredPaperTape" )

    [保存] ボタンの OnSelect * プロパティ

  12. F5 キーを押してもう一度プレビューを表示し、テキスト入力コントロールに数値を入力してボタンを選択します。Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. [保存] ボタンを選択します。Select the Save button. アプリを閉じて再読み込みし、 [読み込み] ボタンを選択してコレクションを再読み込みします。Close and reload the app, and select the Load button to reload your collection.

注意

SaveDataLoadDataは power apps Mobile では機能しますが、power Apps Studio または power apps 用 web プレーヤーは使用できません。SaveData and LoadData function in Power Apps Mobile but not Power Apps Studio or the web player for Power Apps.