【Power Automateではじめる業務の完全自動化】実務直結のノウハウが満載! 本連載では、企業へのMicrosoft 365の導入や活用支援を手がける著者・太田浩史氏による、Power Automateを使った業務自動化のノウハウを提供します。

第5章|思い通りのフローを作成するための一歩進んだテクニック
LESSON 24

文字列処理の関数でテキストを抽出・整形する

取得した連携先のデータが、使いやすい形になっているとは限りません。特に文字列のデータは、人が読むと分かりやすいものの、自動処理には不要なものが含まれていることもあります。文字列処理の関数を利用すると、そうした文字列の整形なども行えます。

文字列処理の関数を確認しよう

届いたメールの件名に特定のキーワードが含まれていないかを調べたり、本文の一部分だけを抽出したりなど、フロー作成では文字列のデータに対する処理を行いたいことも多くあります。関数を使うと、文字列の連結や置換、検索、抽出などが行えます。

文字列処理の関数例

関数名 説明 利用例 得られる結果
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」の値を取得します。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

一方のcontains関数は、大文字小文字を区別します。先ほどと同じように引数を指定しても、文字列を発見できずに「false」の値を取得します。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

contains関数で大文字小文字を区別せずに文字列を探すには、元の文字列をすべて大文字に変換するtoUpper関数を組み合わせます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

関数名 説明 利用例 得られる結果
toUpper 指定した文字列を大文字にする toUpper('abcde') ABCDE

文字列処理の関数を組み合わせる

文字列の関数は、複数の関数を入れ子にして組み合わせて利用することがほとんどです。例えば「この本の価格は1848円です」という文の中から、価格の値となる「1848」を抜き出すには、次のような関数が必要です。複雑な式になりますが、関数を利用することで、文章中に現れる価格の桁数が変わったとしても値を読み取れます。なお、slice関数の第3引数は省略することができ、その場合には文字列の最後までを抜き出します。

slice関数で7文字目から11文字目までを抜き出す

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

関数でメールの本文から必要なデータを抽出する

届いたメールの本文から必要なデータを抜き出して、Excelにまとめる実践的なフローを作成してみます。例として、注文が入ると次のようなメールがシステムから送られてくると仮定します。このメールから「商品名」「ISBN」「価格」「数量」のそれぞれの値を抜き出し、Excelシートに書き出します。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

フロー作成の準備

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

メールの本文はHTMLタグと改行に留意する

メールの本文を処理するときには、HTMLタグが含まれている可能性も考慮し、[Content Conversion]の[Htmlからテキスト(プレビュー)]アクションを利用してHTMLタグを取り除きます。次に、処理を簡単にするために本文を改行ごとに分割しておきます。改行で分割するには改行のみを文字列として含む変数を作成し、その変数の値をsplit関数で利用します。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

split関数で1行ごとに文字列を分割する

作成した[改行]変数を用いてsplit関数で文字列を分割します。この関数によって、1行ごとに分割されたアレイが作成されます。なお、アレイについては以降のLESSONで詳しく解説しています。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

作成されるアレイ

アレイの要素番号 各要素の内容
0 新しい注文が入りました
1 ---------------注文の内容---------------
2 商品名:Microsoft Teams踏み込み活用術 達人が教える現場の実践ワザ
3 ISBN:978-4295011767
4 価格:1,848
5 数量:3
6 ---------------------------------------

必要なデータが入っているのは、アレイの「2」「3」「4」「5」番の要素です。split関数の閉じ括弧のあとに「?[2]」と付けることで、関数によって作成されたアレイの2番の要素を取り出すことができます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

要素の中から不要な文字を削除する

さらに要素の内容から不要な文字を省きましょう。アレイの2番の要素にあるの商品名のデータには、「商品名:」と入っていますが、Excelで一覧を作る場合にはこれは不要です。そのためslice関数を利用して、「商品名:」以降の文字列のみを抜き出します。そのためには、先頭を0から数えて、4文字目以降を抜き出せば良いと分かります。ここまでの説明をすべて含んだ式は次のようになります。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelに各データが入力されるよう式を指定する

ここまでの考え方を基にして、ほかの必要なデータもそれぞれ抜き出す式を作成します。それらの式を[Excel Online(Business)]コネクタの[表に行を追加]アクションに指定します。このフローが正しく実行されると、データの保存先の元のメールに含まれていた必要な情報だけが記録されていきます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

ここもポイント!文字列処理に関するアクション

[テキスト関数]として、indexOf関数と同等の[テキストの位置の検索]アクションと、substring関数と同等の[部分文字列]アクションが用意されています。しかしアクション数は決して充実しているとは言えず、文字列処理には関数の利用がほぼ必須になるでしょう。そのため、フロー作成において文字列の処理が必要なものは、作成の難易度が少々高くなってしまいます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

文字列処理のための式作成を支援する機能

複雑になりやすい文字列処理の式作成が簡単に作成できるように、支援してくれる機能があります。この便利な機能は、式の作成時に、[例を使用してデータを書式設定する]をクリックすると利用できます。まずは、文字列処理したい動的なコンテンツを選択します。例えば、[手動でフローをトリガーします]トリガーの動的なコンテンツ[ユーザーの電子メール]には「メールアドレス」が含まれます。このメールアドレスの「@」より左の部分を抜き出す処理を作成してみましょう。次に、値の例と希望する出力をそれぞれ入力する画面が表示されます。ここでは、動的なコンテンツに含まれる可能性のある値の例と、式で処理されたあとに得たい値の例をそれぞれペアで入力します。ある程度入力したところで[式を取得する]をクリックすると、うまくいけば式が作成されます。最後に[適用]をクリックすることで、アクションの設定に作成された式が適用されます。

複雑な文字列の処理には対応できないなど万能ではありませんが、簡単な処理であれば例を提示するだけで式を作成できるため便利です。また、このようにして作成した式を見ながら、どういった処理になっているのかを読み解くことで、式の学習にも役立ちます。

メールアドレスの「@」より左の部分を抜き出す

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

関連記事