はじめに
Power Appsの中で文字列を作成するときに、Excelと同様&
を使ってしまうことが、しばしば登場します。
理解しやすい反面、慣れてくると美しくないな
と思うかもしれません。
要素が多くなってくると読みづらくもなるので、できればスッキリできる方法が知りたい。
そこで登場するものが$を用いた文字列の補間です。
$(文字列補間)の使い方
文字列補間は、先頭に$
を付けたうえで文字列を記載します。
サンプルとして下記の例を挙げます。
$"Good morning🐟{User().FullName}
今日は{Today()}です!"
User 関数とToday 関数が、あいさつ文の間に良い感じで入っています!
中括弧 {}
で囲まれた部分に、変数や数式を設定でき、非常に便利です。
Concatenate 関数や&
よりも式がスッキリまとまります!
// &で無理やりくっつけた例
- "Good morning🐟" & User().FullName & "
-今日は" & Today() & "です!"
+$"Good morning🐟{User().FullName}
+今日は{Today()}です!"
Pythonのf文字列
のようなイメージ
この使い方はPython
でいうf文字列
(フォーマット済み文字列リテラル)の使い方に非常に似ています。
from datetime import datetime
user_name = "ガツオ 出戻り"
today_date = datetime.today().strftime('%Y-%m-%d')
message = f"Good morning🐟 {user_name}\n今日は {today_date} です!"
print(message)
f"Good morning🐟 {user_name}\n今日は {today_date} です!"
に注目すると、
ほとんどf
が$
に置き換わっただけと理解できます。
$"Good morning🐟{User().FullName}
今日は{Today()}です!"
関数でサクっとユーザー情報をとれることが嬉しかったりしますね。
文字列補間を使ったチュートリアルの作成
よくアプリケーションが始まると、Welcome!!
みたいなメッセージが出たりします。
OnVisible
の操作を仕込んだりもしますが、時間別に画面を変えるものを作ってみましょう。
画像はPower Apps
のストック画像を使っています。
Now()関数で対処したいところですが、記事を一気に書き上げたいことから、コンテキスト変数で関数は宣言します。
テキストラベルとイメージ コントロール
主題は$
の文字列補間ですが、イメージ コントロールも同様に時間に合わせて画像を変えます。
赤枠rgb(255,0,0)
がテキストラベル
、青枠rgb(0,0,255)
がイメージ コントロール
です。
$"{Switch(
true,
And(
Hour(_nowTime) >= 5,
Hour(_nowTime) < 9
),
"早起きですね!おはようございます",
And(
Hour(_nowTime) >= 9,
Hour(_nowTime) < 14
),
"おはようございます",
And(
Hour(_nowTime) >= 14,
Hour(_nowTime) < 18
),
"夕方ですね",
And(
Hour(_nowTime) >= 17,
Hour(_nowTime) < 20
),
"こんばんは",
And(
Hour(_nowTime) >= 18,
Hour(_nowTime) < 23
),
"遅くまでお疲れ様です!",
"こんな時間までお疲れ様です!"
)} {User().FullName}🐟
時刻は{_nowTime}です!"
Switch(
true,
And(
Hour(_nowTime) >= 5,
Hour(_nowTime) < 9
),
'182654618',
And(
Hour(_nowTime) >= 9,
Hour(_nowTime) < 14
),
'530053449',
And(
Hour(_nowTime) >= 14,
Hour(_nowTime) < 18
),
'589001480_super',
And(
Hour(_nowTime) >= 18,
Hour(_nowTime) < 23
),
'855936706_medium',
'922707200'
)
イメージ
は今回の主題から逸れてしまっていますが、一切&
が登場していないことがわかります。
すらっと書いて、関数を美しくまとめる!
そんなことができますね!
おわりに
今回は$
を用いたテクニックを紹介しました!
マラソン🏃はまだまだ続く・・・💦