Power AppsでファイルパスやURLから特定の階層までの部分だけを取り出したいと思ったことはありませんか?
例えば、/folder1/folder2/folder3/file.txtというパスから、2階層目までの/folder1/folder2だけを取得したい場合、標準の関数だけでは少し面倒ですよね。
ほかにも、指定したカンマ(,)の手前までとか、指定した改行の数までとか。
そんな時に便利なのが、今回ご紹介するTextBeforeN関数です。このユーザー定義関数を使えば、指定したN番目の区切り文字より前の部分を簡単に取得できるようになります。
Power Apps のユーザー定義関数とは?
ユーザー定義関数は Power Apps 内でプログラミングでいうところのメソッドを定義できる機能で、ユーザーごとに独自の関数を作成し、それをアプリ内で利用できる機能のことです。
TextBeforeN関数とは
この関数は、PowerFxで作成したユーザー定義関数で、以下の3つのパラメータを指定して利用します:
- 元となるテキスト source
- 区切り文字 delimiter
- 区切り文字が存在する場所(何番目か) n
使い方の具体例
実際にどのように動作するのか見てみましょう。
まずは具体的な関数の式を紹介します。
TextBeforeN(source:Text, delimiter:Text, n:Number):Text =With(
{
parts: Split(source, delimiter)
},
With(
{
occ: CountRows(parts) - 1,
k: If(n >= 0, n, CountRows(parts) - 1 + 1 + n)
},
If(
k <= 0 || k > occ,
"",
Concat(FirstN(parts, k), Value, delimiter)
)
)
);
区切り文字が存在する場所の数字を1と指定すると、最初に指定した区切り文字が登場した場所より手前のテキストを取得します。

同様に、2と指定すると、2回目に指定した区切り文字が登場した場所より手前のテキストが取得できるんですね。

このような仕組みにより、好きな箇所の値を自由に取得できる形となっています。
注意しておきたい仕様
ここで気をつけたいのは、指定する数字についてです。
例えば、区切り文字が4つ登場しているテキストに対して、4以上の数(例えば5など)を指定してしまうと、何も表示されない形になります。

つまり、実際に存在する区切り文字の数を超えた値を指定した場合は、結果が返ってこないということですね。
また、動画では特に紹介していませんが、 「-1」 を指定すると、必ず一番後ろの区切り文字が指定出来たりもします。”最後に登場した / の手前まで”とかそういった使い方がいちいち数を計算せずとも利用可能です。

どんな場面で使えるの?
このTextBeforeN関数の利用用途としては、主に以下のような場面で活躍します:
- ファイルパスの指定した階層までの取得
- URLを含めた階層系のテキストの加工
- 指定した改行の数の手前までの取得
- バージョン番号の加工や取得
階層構造を持つテキストであれば、様々な場面で応用できるでしょう。
さらに学びたい方へ
Power Fxの標準関数にはない機能も、工夫次第で実現できるのがユーザー定義関数の魅力です。ぜひ試してみてください。
Power Apps学習の決定版!コントロール別YouTube再生リスト完全ガイド
Power Appsを学習していて「どのコントロールをどう使えばいいのかわからない」「実際の使い方を動画で見ながら覚えたい」と思ったことはありませんか?
実践的な知識を効率よく身につけられるよう、現在公開している動画を整理したYouTube再生リスト集をご紹介します。



コメント