【Power Automateでもエクセルと同じように、関数を使いこなして文字列操作しよう!】
Power Automateを使用する際に、エクセルを使用している時と同じように「LEFT関数」や「RIGHT関数」を使いたい時があると思います
Power Automateでも関数は使えるのですが、エクセルとは少し勝手が違います
今回の記事では「エクセルとの勝手の違い」を交えながら、日付を含む文字列などの表示操作について解説していきたいと思います
目次
文字列の切り取り
Power AutomateではLEFT関数やRIGHT関数はありません
ですので、エクセルで言えばMID関数に相当するSubstring関数を使用します
MID関数では文字位置を指定して、指定した長さを切り取ります
Power AutomateのSubstring関数も同様の機能です
Substring関数の文法は次のようになります
Substring(①対象文字列,②開始位置,③切り取り文字列の長さ)
LEFT関数
例えば、文字列「123456789」から左側4文字を切り取りたいとします
この場合、Substring関数の引数②開始位置を0で指定するのがポイントです

上の画像では変数:操作対象文字列に文字列「123456789」が設定されています
こちらを変数の設定アクション内でSubstring関数を使用し、左4文字を切り取ります

上の画像の式の中身は以下の通りとなります
substring(variables(‘操作対象文字列’),0,4)
「variables~文字列’)」の箇所は動的コンテンツで取得するのもよし、直接variablesと書いても大丈夫です
前述の通り、0で開始位置を指定し、第三引数で切り取りたい文字数を指定しています
これで下の画像のように、Power Automateを動かすと文字列1234が123456789から切り取りできます

RIGHT関数
LEFT関数と比べると少し難易度があがりますが、パターンは決まっています
LENGTH関数で文字列の長さを取得し、開始位置を指定します
開始位置は(文字列の長さ-切り取る長さ)となります
今回で言えば、9文字:123456789から4文字:6789を引いた5が開始位置になります
*この関数は0からカウントが始まります。ですので、エクセルで言えば6が開始位置です
但し、ここでエクセルとの違いがでてきます
エクセルにて引き算をする際は、ーを使用すればOKです
Power Automateの場合はSub関数を使用します
ここが少し面倒なところです
ですので、式は以下のようになります
substring(variables(‘操作対象文字列’),sub(length(variables(‘操作対象文字列’)),4),4)
上の式から第二引数を抜き出すと次の通りとなります
sub(length(variables(‘操作対象文字列’)),4)
length関数で「操作対象文字列」の長さを取得しているのは分かりやすいと思います
ここで取得した長さから4を引くのに、前述のsub関数の第二引数にて4を指定しています
これで下の画像のように、Power Automateを動かすと文字列6789が123456789から切り取りできます

数値の桁区切り
エクセルでは数値の桁区切りは関数で処理しません
画面上にメニューがちゃんとあります
Power Automateの場合は、関数で処理を行います
使用する関数はformatNumber関数です

エクセルとの違いは、formatNumber関数により文字列に変換されます
ここが注意点です
次が実際の式です
formatNumber(variables(①’操作対象文字列’),②’#,#’,③’ja-jp’)
①が操作対象です
こちらは整数形式のものを指定します
②で表示形式を指定し、③は固定の指定になります
これで数値の桁区切りになります

注意点
formatnumber関数にもし、0を入力した場合を見てみましょう!
結論としては、関数からの出力が空欄になってしまいます
こちらは次のフローで見てみます

「手動でフローをトリガーします」で入力したものを「変数を初期化する」アクションにおいて、formatnumber関数により桁区切りをしています
formatnumber(int(triggerBody()[‘text’]),’#,#’,’ja-jp’)
このフローのトリガーに0を入力してみます

そうすると下の画像のように、空欄になってしまいます

それではここから、対策について解説致します
if(equals(triggerBody()[‘text’],’0′),0, formatnumber(int(triggerBody()[‘text’]),’#,#’,’ja-jp’))
条件式にて値が「0」の場合は、0を出力するようにします
これでformatnumber関数からの空欄出力は回避できます
日付形式
Power Automate内でよく下の画像のような日付を見ることがあると思います

TやZが入っていいるのもあって、そのままでは表示データとしては使えません
ただし、この記事ではこれ以上はタイムゾーンに触れず、純粋にこの表示形式を変える方法を解説します
このTやZは、タイムゾーンと関連します
この日付表示を変えるにはformatDateTime関数を使用します
例えば、タイムゾーンに関係なくutcNowという関数で現在時刻を出したとします

この場合は前述のような表示になります

こちらをTやZがない「yyyy/MM/dd形式」にするには、次のようにformatDateTime関数を使用します
formatDateTime(①utcNow(),②’yyyy/MM/dd’)
①は変換対象です
②で表示形式を指定するのですが、シングルクオーテーションを使用します
ここがエクセルとの違いであり、注意点となります
文字列の発見
エクセルにはFIND関数という関数があり、文字列に含まれる指定文字列の位置を取得できます
Power automate でも同じような機能があります
関数ではないですが、ぜひこの記事で紹介しておきたいです
文字列で発見するには、「テキストの位置の検索」アクションを使用します

「テキストの位置の検索」アクションでは2つの項目を使用します
テキスト:操作対象文字列(123456789)
検索テキスト:検索文字列(6789)
上の画像では、テキストと検索テキストの内容は変数で事前に設定してあります
「テキストの位置の検索」アクション内では、動的コンテンツで設定した変数を参照しています
では、この「テキストの位置の検索」を実際に動かすとどうなるでしょうか?

上の画像では6ではなく「5」という結果になりました
これは0からカウント方法によります
このアクション内では1では0からカウントが始まるからです
<まとめ>
今回はPower Automateにて、文字列や表示を変換する方法を紹介しました
エクセルと方法が少し違いますが、違うパターンは決まっているのですぐに慣れていくと思います
特にSubstring関数はCSVを変換する時などよく使うので、今回を機会にぜひ慣れて頂くといいと思います
とにかくクラウド作業を省力化するにはPower Automateは欠かせません
ぜひ有効活用してみてください!
コメントを残す