PowerAppsでUpdateContext関数を使う|コンテキスト変数の使い方と合わせて解説
スポンサーリンク

今回は特定の画面の中で使うための変数(=コンテキスト変数)を使うための関数、Updatecontext関数を見てみます。

PowerAppsに必須の知識PowerFX対応の学習本はこちら
PowerApps学習の本命・実際のアプリももらえる学習本
PowerApps学習方法一覧

\ノーコード技術を磨いて副業!/

UpdateContext関数とは

UpdateContext関数とは現在使用している画面でのみ使う変数(=コンテキスト変数)を設定、変更するための関数となります。

他の画面でも変数を使う場合はNavigate関数で変数を引き渡す、もしくは全ての画面で使うことできる変数を設定できるSet関数を使うことになります。

コツリン
変数についての説明はこっちの記事で行っているぞ

入力内容

UpdateContext({変数名:格納するデータ})

で入力します。

変数名は日本語でも半角英数字でも大丈夫ですが、半角数字のみでは変数になりません。半角数字を使う場合は日本語や英字を組み合わせて使いましょう。

入力内容詳細

格納するデータは好きなデータを入れることができます。データを直接入れ込んでも良いですし、関数を使って戻り値を格納することも可能です。データの種類についてはPowerAppsが自動で判断してくれるのでどのデータを使っても問題ありません。

具体例

例えば

Updatecontext({num:1})
とすればnumという変数に数字の1が入ることになります。

Updatecontext({num:”1"})
とすればnumに文字列の1が入ります。

Updatecontext({num:sum(1+2)})
とすればnumにSumの戻り値である3(1と2をsum関数で加算したもの)が入ります。

新規の変数とすでにある変数

Updatecontext関数は新規に変数を作成する場合でも、すでにある変数を更新する場合でも使い方は同じになります。

関数内の変数のところにまだ使用されていない変数名を書けば新たに変数が作成され、すでにある変数を書いた場合はその変数が上書きされることになります。

現在の変数の値を参考に変数を変更したい場合は格納したいデータのところで変数を使うこともできます。

具体例

例えばボタンを二つ作り片方のOnselectに
UpdateContext({num:1})
もう片方のOnselectに
UpdateContext({num:2})
と入れれば、ボタンが押されるたびにそのボタンの内容に沿った内容が変数Aに格納されます。

また、UpdateContext({num:num+1})
とすればnumにはボタンを押した回数だけnumに1が加算されることになります。

変数とデータの型

変数は一度データの型を指定すると変更することができません。そのため、画面内でUpdateContextを二つ用意しそれぞれで違う型のデータを格納しようとするとエラーが発生しますので注意してください。

変数の中身を一度設定することで変数が受け取れるデータの型はそのデータの型のみに限定されてしまいます。

違うデータの型を入れるとエラーになる

複数の変数を同時に操作場合

複数の変数をまとめて作成する場合は以下のように,(カンマ)で区切って書くことでまとめて変数をつくることができます。

具体例

例えば
UpdateContext( { num1: 10, num2: 20 } )
とすることでまとめてnum1とnum2にそれぞれ10と20が格納されることになります。

変数と画面推移

UpdateContext関数は特定の画面でのみ使うことのできる変数になりますが、Navigate関数(他の画面に移動するための関数)を使う際に設定をすることで変数の中身を次の画面に引き継ぐことができます。

書き方は次の通りになります。

Navigate(移動先の画面名,ScreenTransition.None ,{変数A:変数B})

移動先の画面名はScreen1などの画面名を記入にします。第二引数には、ScreenTransition.noneを入れることでなんのエフェクトもなく画面が推移します。本来は省略できる引数なのですが最後の変数を指定するためには省略せずに書くことが必須になってしまうため変数を引き渡す場合は省略せずに書く必要があります。もちろん、画面偏移の際にエフェクトをかけたい場合はエフェクトを指定することもできます。

最後に{変数A:変数B}で変数の値を次に引き渡すことができます。変数Aには現在の画面で使用している変数名、変数Bには次の画面で使う変数名を指定することができます。もちろん、変数Aと変数Bはそれぞれの違う画面で使われるため遷移前の変数名と遷移後の変数名を同じにすることも可能です。その場合は
Navigate(移動先の画面名,ScreenTransition.None ,{変数:変数})
となります。ここではわかりやすくするために変数Aと変数Bという表記にしました。

変数の受け渡し時に値を変更したい場合などは変数Bのところで式を書けば次の画面では計算された結果が変数として使用することができます。
Navigate(移動先の画面名,ScreenTransition.None ,{変数:変数+1})
とすることで遷移前の変数に1を加算した値が次の画面で使用することができます。

変数の中身が消去されるタイミング

変数の中身を消去するには二つの方法、タイミングがあります。

任意で消去する場合

任意で変数を一度空にしたい場合はblank関数を使うことでできます。
blank関数は中身のない値を返してくれる関数になります。

そのため
UpdateContext({変数:blank()})
とすることで変数の中身を空っぽにすることができます。

この時、データの方が数字などの場合は0とは違う意味になりますので気をつけてください。テキストデータの型の場合は""を入れたのと同じ状態になります。

自動で消去されるタイミング

自動で変数の中身が消去されるのは、アプリを終了したタイミングになります。

そのため、単純に画面を偏移しただけでは変数の値は消去されません。変数を作成した後に他の画面に移動し変数を確認してみると遷移前の画面における変数がしっかりと残っていることが確認できます。
もちろん、画面を戻せば遷移前に作った変数はそのまま残っています。

スポンサーリンク
社会人ということを言い訳にしていませんか

社会人だから学ぶ時間がない

そんなことを言い訳に勉強をすることを諦めていませんか。
そんな状態ではいけないということはあなた自身が一番知っているはずです。

社会人だからこそ学ぶ必要がある。そんな社会人に送る学習ツールがこちらです
↓↓↓

おすすめの記事