Power Appsのアプリ内でユーザー名を表示させたいこともあるかと思います。
その際、特に設定をしないと名前の表示が姓・名の順でなく、名・姓の順になってしまいました。
今回は、表示を姓・名順で表示させる方法をご紹介します。
実現したかったこと
Power Apps内でアプリを実行しているユーザーの情報を、テキスト入力箇所に表示させようとしていました。
下記画像のイメージです。
発生した事象
User関数
調べたところ、User関数を利用することでアプリを実行しているユーザー情報を取得できることが分かりました。
具体的には以下の式です。
User().FullName
参考:User 関数 - Power Platform | Microsoft Learn
発生した事象
実際に、上記の式を設定してみました。テキスト入力のDefaultに上記の式を設定します。
すると、テキスト入力部分にユーザー名が表示されました。ですが、表示が名・姓の順番になってしまっています。*1
原因
具体的な理由を見つけることはできませんでした。
仮説になってしまいますが、Microsoft本社があるアメリカでは名前の表記が名・姓の順番であるため、このような表示順になっていると考えられます。
対応策
以下の式を入力することで、姓・名の順で表示させることが出来ました。
式の意味としては「User().FullName」で取得した情報の内、名と姓を分けて取得して姓・名の順番で並び替えるというものです。
Concatenate(Last(ForAll(Split(User().FullName," "), {Result: ThisRecord.Value}).Result).Result," ",First(ForAll(Split(User().FullName," "), {Result: ThisRecord.Value}).Result).Result)
実際に、上記の式を設定してみました。テキスト入力のDefaultに上記の式を設定します。
テキスト入力部分にユーザー名が表示されました。表示も姓・名の順番で表示されています。
式の解説
ここからは、上記の式を分解して説明します。
Concatenate関数
Concatenate関数は文字列を結合する関数です。
参考:Concat および Concatenate 関数 - Power Platform | Microsoft Learn
ここでは、以下の3つを結合しています
- 「Last(ForAll(Split(User().FullName," "), {Result: ThisRecord.Value}).Result).Result」で抜き出した姓。*2
- 「" "」で指定した空白(スペース)。
- 「First(ForAll(Split(User().FullName," "), {Result: ThisRecord.Value}).Result).Result)」で抜き出した名。 *3
Last関数とSplit関数による姓の取得
Last関数とSplit関数を用いて「User().FullName」で取得した情報のうち、空白(スペース)より後ろの情報を抜き出しています。
Last(ForAll(Split(User().FullName," "), {Result: ThisRecord.Value}).Result).Result
今回の例でいうと、「User().FullName」で取得できる値は「太郎 テスト」です。それをSplit関数を用いて空白(スペース)で分割させます。ですので、最初に取得できる値は「太郎」と「テスト」になります。
Last関数を用いて、「太郎」と「テスト」のうち後ろの値を抜き出します。最終的に取得する値は「テスト」となります。
参考:
- ForAll 関数 - Power Platform | Microsoft Learn
- First、FirstN、Index、Last、LastN 関数 - Power Platform | Microsoft Learn
- Split 関数 - Power Platform | Microsoft Learn
空白スペース「" "」
「" "」は空白(スペース)を意味します。
抜き出した値を結合させる際に、空白(スペース)を入れて表記させたいため、この値を入れています。
First関数とSplit関数による名の取得
First関数とSplit関数を用いて「User().FullName」で取得した情報のうち、空白より前の情報を抜き出しています。
First(ForAll(Split(User().FullName," "), {Result: ThisRecord.Value}).Result).Result)
今回の例でいうと、「User().FullName」で取得できる値は「太郎 テスト」です。これをSplit関数を用いて空白(スペース)で分割させます。ですので、最初に取得できる値は「太郎」と「テスト」になります。
First関数を用いて、「太郎」と「テスト」のうち後ろの値を抜き出します。最終的に取得する値は「太郎」となります。
終わりに
Power Apps内でユーザー名の表示順を姓・名で表示させる方法をご紹介しました。
今回は表示させるだけの手段で利用しましたが、取得した情報をPower Appsに連携することも出来ます。
同じような現象で悩んでいる方の参考になれば幸いです。