【Power Automateではじめる業務の完全自動化】実務直結のノウハウが満載! 本連載では、企業へのMicrosoft 365の導入や活用支援を手がける著者・太田浩史氏による、Power Automateを使った業務自動化のノウハウを提供します。
文字列処理の関数でテキストを抽出・整形する
取得した連携先のデータが、使いやすい形になっているとは限りません。特に文字列のデータは、人が読むと分かりやすいものの、自動処理には不要なものが含まれていることもあります。文字列処理の関数を利用すると、そうした文字列の整形なども行えます。
文字列処理の関数を確認しよう
届いたメールの件名に特定のキーワードが含まれていないかを調べたり、本文の一部分だけを抽出したりなど、フロー作成では文字列のデータに対する処理を行いたいことも多くあります。関数を使うと、文字列の連結や置換、検索、抽出などが行えます。
文字列処理の関数例
関数名 | 説明 | 利用例 | 得られる結果 |
---|---|---|---|
concat | 引数に指定された2つ以上の文字列を結合する | concat('こんにちは', '世界', '!!') | こんにちは世界!! |
replace | 第1引数の文字列の内、第2引数の文字列を第3引数の文字列で置き換える | replace('こんにちは世界!', '世界', '日本') | こんにちは日本! |
indexOf | 第1引数の文字列から第2引数の文字列が見つかる位置を取得する | indexOf('こんにちは世界!', '世界') | 5(インデックスは0からはじまる。見つからない場合は-1) |
length | 引数に指定した文字列の文字数を取得する | length('こんにちは世界!') | 8 |
substring | 第1引数の文字列に対して、第2引数で指定された位置から、第3引数で指定された文字数を抜き出す | substring('こんにちは世界!', 5, 2) | 世界 |
substring | 第1引数の文字列に対して、第2引数で指定された位置から、第3引数で指定された文字数を抜き出す | substring('こんにちは世界!', 5, 2) | 世界 |
slice | 第1引数の文字列に対して、第2引数で指定された位置から、第3引数で指定された位置までの文字列を抜き出す | slice('こんにちは世界!', 5, 7) | 世界 |
split | 第1引数の文字列を第2引数の文字列で分割する | split('こんにちは世界!', 'は') | ["こんにち", "世界!"](アレイ形式の値が得られる) |
contains | 第1引数の文字列に第2引数の文字列が含まれているかを確認する | contains('こんにちは世界!', '世界') | true(含まれない場合はfalse) |
さらに上達!大文字小文字の区別に注意
indexOf関数やcontains関数のように、特定の文字列を見つけ出す関数には、アルファベットの大文字小文字の区別に違いがあります。
indexOf関数は、大文字小文字を区別しません。そのため次の例では、文字列を発見でき「1」の値を取得します。
一方のcontains関数は、大文字小文字を区別します。先ほどと同じように引数を指定しても、文字列を発見できずに「false」の値を取得します。
contains関数で大文字小文字を区別せずに文字列を探すには、元の文字列をすべて大文字に変換するtoUpper関数を組み合わせます。
関数名 | 説明 | 利用例 | 得られる結果 |
---|---|---|---|
toUpper | 指定した文字列を大文字にする | toUpper('abcde') | ABCDE |
文字列処理の関数を組み合わせる
文字列の関数は、複数の関数を入れ子にして組み合わせて利用することがほとんどです。例えば「この本の価格は1848円です」という文の中から、価格の値となる「1848」を抜き出すには、次のような関数が必要です。複雑な式になりますが、関数を利用することで、文章中に現れる価格の桁数が変わったとしても値を読み取れます。なお、slice関数の第3引数は省略することができ、その場合には文字列の最後までを抜き出します。
slice関数で7文字目から11文字目までを抜き出す
関数でメールの本文から必要なデータを抽出する
届いたメールの本文から必要なデータを抜き出して、Excelにまとめる実践的なフローを作成してみます。例として、注文が入ると次のようなメールがシステムから送られてくると仮定します。このメールから「商品名」「ISBN」「価格」「数量」のそれぞれの値を抜き出し、Excelシートに書き出します。
フロー作成の準備
メールの本文はHTMLタグと改行に留意する
メールの本文を処理するときには、HTMLタグが含まれている可能性も考慮し、[Content Conversion]の[Htmlからテキスト(プレビュー)]アクションを利用してHTMLタグを取り除きます。次に、処理を簡単にするために本文を改行ごとに分割しておきます。改行で分割するには改行のみを文字列として含む変数を作成し、その変数の値をsplit関数で利用します。
split関数で1行ごとに文字列を分割する
作成した[改行]変数を用いてsplit関数で文字列を分割します。この関数によって、1行ごとに分割されたアレイが作成されます。なお、アレイについては以降のLESSONで詳しく解説しています。
作成されるアレイ
アレイの要素番号 | 各要素の内容 |
---|---|
0 | 新しい注文が入りました |
1 | ---------------注文の内容--------------- |
2 | 商品名:Microsoft Teams踏み込み活用術 達人が教える現場の実践ワザ |
3 | ISBN:978-4295011767 |
4 | 価格:1,848 |
5 | 数量:3 |
6 | --------------------------------------- |
必要なデータが入っているのは、アレイの「2」「3」「4」「5」番の要素です。split関数の閉じ括弧のあとに「?[2]」と付けることで、関数によって作成されたアレイの2番の要素を取り出すことができます。
要素の中から不要な文字を削除する
さらに要素の内容から不要な文字を省きましょう。アレイの2番の要素にあるの商品名のデータには、「商品名:」と入っていますが、Excelで一覧を作る場合にはこれは不要です。そのためslice関数を利用して、「商品名:」以降の文字列のみを抜き出します。そのためには、先頭を0から数えて、4文字目以降を抜き出せば良いと分かります。ここまでの説明をすべて含んだ式は次のようになります。
Excelに各データが入力されるよう式を指定する
ここまでの考え方を基にして、ほかの必要なデータもそれぞれ抜き出す式を作成します。それらの式を[Excel Online(Business)]コネクタの[表に行を追加]アクションに指定します。このフローが正しく実行されると、データの保存先の元のメールに含まれていた必要な情報だけが記録されていきます。
<!--
❶[商品名]の式
-->
<!--
❷[ISBN]の式
-->
<!--
❸[価格]の式
-->
<!--
❹[数量]の式
-->
ここもポイント!文字列処理に関するアクション
文字列処理のための式作成を支援する機能
複雑になりやすい文字列処理の式作成が簡単に作成できるように、支援してくれる機能があります。この便利な機能は、式の作成時に、[例を使用してデータを書式設定する]をクリックすると利用できます。まずは、文字列処理したい動的なコンテンツを選択します。例えば、[手動でフローをトリガーします]トリガーの動的なコンテンツ[ユーザーの電子メール]には「メールアドレス」が含まれます。このメールアドレスの「@」より左の部分を抜き出す処理を作成してみましょう。次に、値の例と希望する出力をそれぞれ入力する画面が表示されます。ここでは、動的なコンテンツに含まれる可能性のある値の例と、式で処理されたあとに得たい値の例をそれぞれペアで入力します。ある程度入力したところで[式を取得する]をクリックすると、うまくいけば式が作成されます。最後に[適用]をクリックすることで、アクションの設定に作成された式が適用されます。
複雑な文字列の処理には対応できないなど万能ではありませんが、簡単な処理であれば例を提示するだけで式を作成できるため便利です。また、このようにして作成した式を見ながら、どういった処理になっているのかを読み解くことで、式の学習にも役立ちます。
メールアドレスの「@」より左の部分を抜き出す
関連記事
本連載は、インプレスの書籍『Power Automateではじめる業務の完全自動化(できるエキスパート)』の内容に基づいています。紹介している情報は、書籍発行時点(2023年9月)のものです。
Source: できるネット
【Power Automate】文字列処理の関数でテキストを抽出・整形する