こんにちは、あんこ先生です。
ユーザーや部門ごとにアプリの設定を変更したいと思いませんか?
たとえば、次のような処理です。
Aさんには承認ボタンを表示させるけど、Bさんは非表示にしたい。
Cさんにはすべての商品を表示、Dさんは野菜カテゴリの商品のみ表示する。
でも、社員数分条件分岐するのは大変だし、メンテを考えるとやってられない。
大丈夫!簡単な設定ですぐできますよ。
そこで、今回はユーザーを識別してアプリ設定を変更する方法をコード付きで紹介します。
応用すれば、部門単位での設定も可能ですよ。
ユーザーまたは部門ごとにアプリの設定を変更する方法
仕組みはとても単純です。
アプリ起動時にユーザー(または部門)情報を取得して、その結果で様々な要件を条件判定させるだけです。
ユーザー情報を取得する
はじめにユーザー情報を取得します。
ユーザーの識別方法は複数ありますが、今回はメールアドレスで判別してみようと思います。
アプリを実行するユーザーのメールアドレスはUser関数で取得できます。
User関数の戻り値は、氏名とメールアドレス、画像のみです。
idや組織などのユーザー情報を取得する場合は、Office365ユーザーコネクタが必要です。
後で使うので、あらかじめ接続しておきましょう。
データの追加 ➡ コネクタ ➡ Office365ユーザー で追加できます。
アプリ起動時に取得する
App.OnStartに記述した内容は、アプリ起動時に1回だけ実行されます。
OnVisibleだとスクリーンを行き来するたびに実行されるのでオススメできません。
取得したユーザー情報は何度も使いまわすので、通信回数を減らすため変数に格納しておきます。
コードは次の通りです。
Set(valUser,User().Email)
これで変数valUserにユーザーのメールアドレスが格納されます。
以後、メールアドレスを参照したいときは、valUserと記述します。
なお、最後の.Emailを省略すると、変数valUserにはUser関数の戻り値がレコード型で格納されます。
テスト用にユーザー切り替え装置を作成する
動作確認のために別アカウントや人を用意するのはナンセンスです。
変数valUserのEmailを書き換えてテストしましょう。
適当なテキスト入力とボタンを設置して、ボタンのOnSelectに次のコードを記述します。
Set(valUser,TextInput1.Text)
これで、ボタンを押せばテキスト入力にあるメールアドレスが変数valUserに格納されます。
ユーザーごとにアプリの設定を変更する
ラベルにユーザー情報を表示する
はじめに、ラベルの文字を変更させてみましょう。
用途としては、ユーザーの名前や所属する部門を表示するといったところです。
まずはユーザー名です。
ユーザー自身の名前なので、User関数でも表示できます。
ただし、姓名が逆になっているので、Office365ユーザーコネクタを使いましょう。
//ラベル.Text
Office365ユーザー.MyProfileV2().displayName
次に部門名です。
部門名はdepartmentに格納されています。
//ラベル.Text
Office365ユーザー.MyProfileV2().department
最後に特定条件でメッセージを変更してみます。
変数valUserに格納されたメールアドレスによって表示内容を変えます。
条件判定は複数名を想定し、Switch関数を使って”七草あんこかそれ以外”で判定します。
//ラベル.Text
Switch(valUser,"anko7793@anko7793.onmicrosoft.com","管理人です","管理人以外です")
ボタンの表示を制御する
ユーザーごとにボタンを表示する、押せるようにする場合に使います。
たとえば、特定の人にだけ承認ボタンを表示させる、押せるようにするといった処理です。
先ほどと同様にSwitch関数を使って”七草あんこかそれ以外”で判定します。
//ボタン.Visible 表示
Switch(valUser,"anko7793@anko7793.onmicrosoft.com",true,false)
//ボタン.DisplayMode 編集
Switch(valUser,"anko7793@anko7793.onmicrosoft.com",DisplayMode.Edit,DisplayMode.Disabled)
ボタンの文字を変えたい場合は、ラベルと同様の手順でできますよ。
選択肢の初期値を設定する
ドロップダウンやコンボボックスの初期値を変更します。
人や組織によって初期値を変えることで余計な手間を省けますね。
なお、ドロップダウンはレコード、コンボボックスはテーブルなので指定方法が異なります。
//ドロップダウン.Default
Switch(valUser,"anko7793@anko7793.onmicrosoft.com","こしあん","つぶあん")
//コンボボックス.DefaultSelectedItems
Switch(valUser,"anko7793@anko7793.onmicrosoft.com",["こしあん"],["つぶあん"])
ギャラリーのデータソースを切り替える
ユーザーごとにデータソースを切り替えたい場合に使います。
たとえば、”七草あんこは全データ、それ以外の人には野菜のみのデータ”を参照させます。
//ギャラリー.Items
Switch(valUser,"anko7793@anko7793.onmicrosoft.com",T_売上,Filter(T_売上,種類="野菜"))
開始スクリーンを切り替える
アプリ開始時、App.StartScreenに記述したスクリーンに移動します。
記述がなければ一番上の階層にあるスクリーンになります。
StartScreenでは変数が利用できないため、直接User関数等で指定しましょう。
用途として、ユーザーによって開始時のスクリーンを変更したい場合に使います。
たとえば、作業者は作業スクリーン、承認者は承認スクリーンに移動させます。
App.StartScreen
Switch(User().Email,"anko7793@anko@anko7793.onmicrosoft.com",Screen2,Screen1)
ユーザーまたは部門ごとにアプリの設定を変更する方法のまとめ
今回は、ユーザーごとにアプリ設定させる方法を紹介しました。
ユーザーの識別は、同姓同名対策でメールアドレスとしました。
アプリ起動時にユーザー情報を変数に落とし込んでおけばなにかと便利です。
今回のようにアプリの設定はもちろん、作業者判定やメール送信など使いどころはたくさんあります。
すべてのアプリで設定しておくことをオススメします。
コメントを残す