Power Apps のキャンバス アプリの変数には、グローバル変数とコンテキスト変数、コレクションの3種類があります。今回は、グローバル変数(Set)とコンテキスト変数(UpdateContext,Navigate)に着目してお話していきたいと思います!

1.共通事項

グローバル変数とコンテキスト変数の値の扱い方は、ほとんど共通しています。

  • アプリを閉じると、変数の値はクリアされる
  • 値には、テキスト列、数値、テーブル、レコードなど任意のデータ型を設定できる
  • 同じ変数に異なるデータ型の値を指定することはできない
    (ある OnSelect プロパティでは、Set(_x,1)で数値型を指定して、別の OnSelect プロパティでは、Set(_x,”1″)でテキスト型を指定しようとするとエラーが発生します)

2.それぞれの変数の特徴

グローバル変数とコンテキスト変数の一番の違いは、スコープの範囲です。

変数の種類説明関数
グローバル変数アプリ内のどこからでも参照可能な変数です。Set
コンテキスト変数特定のスクリーン内のみ参照可能な変数です。UpdateContext
Navigate

私は基本的に、Set 関数でグローバル変数を利用することが多いです。
例外として、画面遷移時に他のスクリーンに値を渡したいときは Navigate 関数を、別のスクリーンでも同じ変数名を利用したいときに UpdateContext 関数を利用したりしています。

個人的には、グローバル関数は『標準語』、コンテキスト変数は『方言』というイメージをしています。
(^・ェ・^).oO(今だけ、アプリ=日本、各スクリーン=都道府県とかの地域だと思ってください)

グレーのコメントが、実際に設定した式です。

長野県スクリーンで、「_モチベーション」と「_ズク」という変数を設定しています。

Set 関数で設定した「_モチベーション」は、グローバル関数(≒標準語)のため、長野県でも新潟県でも「やる気」と表示されます。

UpdateContext 関数で設定した「_ズク」は、コンテキスト関数(≒方言)のため、長野県では表示されますが、新潟県では「ズク」が何か分からずエラーとなっています。

公開情報:キャンバス アプリの変数を理解する

3.各関数の使い方

(1)Set 関数

Set(変数の名前,変数の値)

結果
Set(_X,1)「_X」という変数の値は、1となります。
Set(_X,_X+2)前の「_X」の値1に2を加えて、3となります。
Set(_モチベーション,”やる気”)「_モチベーション」という変数の値は、「やる気」となります。
Set(_motivation,{単語:モチベーション,意味:やる気,カテゴリ:標準語})「_motivation」という変数の値には、 {単語:モチベーション,意味:やる気,カテゴリ:標準語} というレコード値になります。

このレコード全体を参照するには、「_motivation」を指定します。カテゴリ列の値のみを参照するには、「_motivation.カテゴリ」を指定します。
Set(_Title,Gallery1.ThisItem.Title)「_Title」という変数の値には、Gallery1(ギャラリー)で選択しているレコードのTitle列の値になります。

公開情報:Power Apps の Set 関数

(2)UpdateContext 関数

UpdateContext({変数の名前:変数の値})
UpdateContext({変数1の名前:変数1の値,変数2の名前:変数2の値,変数3の名前:変数3の値,、、、})

※Set 関数とは異なり、一度に複数の変数を作成・更新することができます。

結果
UpdateContext({_Y:1})「_Y」という変数の値は、1になります。
UpdateContext({_X:3,_Y:5})「_X」の値は3、「_Y」の値は5になります。
UpdateContext({_Count:_Count+1})式が実行されるたびに、「_Count」の値は1ずつ加算されます。
UpdateContext({_User{Name:User().Name,mail:User().mail}})「_User」の値は、Name列に現在のログインユーザーの表示名、maile列にログインユーザーのメールアドレスといったレコードになります。

公開情報:Power Apps の UpdateContext 関数

Navigate(遷移するスクリーン,{変数の名前:変数の値})
Navigate(遷移するスクリーン,遷移時の見た目,{変数の名前:変数の値})

Navigate 関数は、基本的に画面を遷移するための関数です。
画面を遷移するときに、現在の画面上の値を、遷移後の画面に渡すことができます。

結果
Navigate(NewScreen,{ID:4})NewScreen に遷移します。NewScreen のコンテキスト変数の「ID」の値は4になります。
Navigate(NewScreen,ScreenTransition.Fade,{ID:4,Animal:Tiger}) 画面がフェードアウトしながら、NewScreenに遷移します。NewScreen のコンテキスト変数の「ID」の値は4、「Animal」の値は Tiger になります。

公開情報:Power Apps の Back および Navigate 関数

私は、慣れるまでは Set 関数のみを利用していました。Set 関数だけでも覚えておくと、値の受け渡しがしやすくなるのでお勧めです😊

今回、コレクションについては触れませんでしたが、コレクションもとても便利です!難しそう、、、と勝手に思っていましたが、意外と簡単でした!一度、触ってみることって大切ですね(₌・ェ・₌)

コレクションについても後日、アップしようと思っています!