はじめに
Power Appsでアプリを作成しているとき、例えばヘッダーやメニューバーなど、異なる画面でも同じコントロールたちを利用したい場合ってありますよね。
そのような場合は、皆さん、コントロールたちを選択して各画面にコピペを行うと思います。
その際、Power Appsは異なる画面間でも同じ名前でのコントロールの命名は許可していないので、コントロール名の末尾に「_[数字]」が付与されます。
このコピペ作業の後、各命名規則に従ってコントロール名を変更していくことになるわけですが、コントロール数が多いとそんな作業もめんどくさいですよね。。。
そんな時役立つのが置換機能です!
置換機能を利用する
さて早速本題です。
こんな感じの画面の個々の部分
このヘッダーとサブタイトルの箇所を他の画面にもコピペしようと思います。
これらは以下のコントロールたちで構成されています。
今回命名規則は「[画面名の略称][機能名][コントロール種別]」みたいな感じの命名規則にしています。
この画面は「HomeScreen」って名前にしているので「HS」が頭についている感じですね。
さてこれらの要素を別の画面(ListScreen)にコピペしてあげます。
するとこんな感じで、コントトール名の後に「_1」が付与されますね。
これをちまちま名称変更していってもいいのですが、めんどうなので置換機能で纏めて置換しちゃいます。
置換はここから行うことができます。
この置換機能ですが、正規表現がサポートされいていますのでオンにしてあげましょう。
今回でいうとコピペされたコントロール名たちから、
- 画面名の略称を変更
- _1の取り除き
を行いたいです。
置換対象のコントロールたちに一致している条件は「HS[各コントロールによって可変]_1」なので、これを正規表現で表すと、
HS.*_1
になります。
するとこのように置換対象のコントロールの一覧が表示されました。
ただこのままでは置換後の文字列で「[各コントロールによって可変]」の部分の設定に困ってしまいます。
そこで検索文字を
HS(.*)_1
に変更してあげます。
()で囲ってあげることで、その箇所を$1などとすることによって置換後の文字列にもそのまま利用することができます。
これはPower Appsの機能ではなく、正規表現で置換を行う際にサポートされているような機能ですので覚えておくと他のときにも役立てることが可能です。
さて、肝心の置き換え先の文字列は以下のように設定します。
LS$1
ここまでくるとあとは「すべて置換」を選択するだけのように思えますが、一つ落とし穴があります。
実際に「すべて置換」をして確認してみましょう。
コントロールは置換できていますが。。。
なんだか関数のとこでエラーが発生しているようです。
みてみると、関数はうまく置換できていないようですね。
どうやら、$1などでの置換機能はコントロールに対してのみ有効で、関数式への置換は現時点では行えないようです。
これは不具合なのかそういう仕様なのか。。。
ちょっと残念。
ただ今回の事例でいうと別に詰んだわけではないです。
Power Appsはコントロール名を変更すると、それを用いている式の箇所も自動で置き換わってくれますよね?
それがこの置換機能でも有効です。
よってこのようなことを行う場合は、コントロールに対してのみ行うようにしましょう。
一度行った置換は「Ctrl + Z」(戻る機能)で一括ですべて戻せます。
置換対象はここのチェックを付けたり外したりすることで制御可能です。
関数の箇所は置換対象から外したいので、チェックを外しましょう。
まぁ、検索する式を
HS(.*)_1$
に変更することで今回は対処可能なんですけどね。
そんな余談は置いておいて置換を行うと...
無事コントロール名が置換されて、そのコントロールを参照している式も置き換わってくれました!
おわりに
こんな感じで置換機能を活用することでPower Appsでのアプリ作成作業での命名も、もう少し楽に作業ができるようになります。
個人的にこういうちまちました作業は嫌いなので、こんな感じの機能どんどん追加してほしいですw
最後に、このアプリなんだ?と思われた方もいるかもしれませんが、これは #JPPC2022 で登壇するように作成しているアプリです。
powerplatformconf.connpass.com
私は、「Power Apps でテストをしてみる」というテーマで今回登壇させていただきます。
テストに関してなのでこのアプリはただテストを実演するために作っているアプリですw
もしかするとめんどくさくなってMSが公開しているサンプルのアプリで説明を行う方向にシフトするかもしれませんが、そのときは察してください。
当日はテストとモニター機能についてお話したいなー。と思っていますので、興味があり、お時間の都合つく方は是非ご参加くださいー
平日ですが、私のセッションはお昼時なので、お昼食べながらでも!
セッションの時間てきにデモをお見せできる時間あるかなー?どうかなー?というのが心配ですね。
時間なかったら後でYouTubeにでも補足的な感じで投稿するかもです。
他の方のセッションも非常に面白そうなものが多いのでお時間つく方は是非ご参加くださいね!