リモートワークで導入して良かったツール詳しく見る

Power Automateで文章から文字列を抽出する。(文字数不明ver)

前回の記事ではメール本文から文字列を検索して抽出しました。前回の記事では切り抜く文字が固定の文字数でしたので抽出しやすかったのですが、今回は文字数がわからない場合のケースを想定して文字列を抽出してみたいと思います。

この記事でわかること

  • メール(テキスト)から文字列を抽出する方法について理解できる。
  • 商品名のような固定長ではない文字列を抽出する方法が理解できる。
目次

やること

じょじお

下記の要件でメールから文字列を抽出します。今回は商品名のような文字数が多岐に渡るケースを想定しています。

要件

  • 下記のような決まったメールフォーマットから商品名を抽出する。
  • 商品名の文字数は様々

◇◇ 株式会社
〇〇 様

平素よりお世話になっております。
下記の注文をさせていただきます。何卒よろしくお願い致します。


・商品名:猫用おやつ ちゃ〇ちゅ~る
・製品番号:123-T4567
・数量:500個
・納品希望日:2021年11月25日
・納入希望場所:株式会社てじらぼ A倉庫

以上、宜しくお願いします。


じょじお

今回もsubstring関数を使います。

まず、抽出の方法としては、前回の記事と同様にsubstring関数を使用します。substring関数には、①商品名の開始位置と、②切り取る文字数(商品名の文字数)が必要でした。

substring関数の第1引数 抽出開始位置

商品名の開始位置は、indexOf関数で良さそうです。indexOf(‘メール本文’,’・商品名:’)で検索できました。実際に取得されるのは・商品名:の先頭の文字’・’の位置です。実際には5文字後ろから取得したいので5を足します。

開始位置
add( indexOf('メール本文','・商品名:') ,5)

substring関数の第2引数 文字数

商品名の文字数がわからないので、次の行の開始位置から商品名の開始位置を引いた数を商品名の文字数としたいと思います。下の図のイメージです。

substring関数に渡す抽出文字数の考え方

つまり下記のようになります。Sub関数は1番目に渡した引数から2番目に渡した引数を引き算する関数です。

sub(
  sub(indexOf('メール本文','・製品番号:'),1),
  add(indexOf('メール本文','・商品名:') ,5)
)

引き算はsub関数を使う!
https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference#add

Power Automateのフローの作成手順

じょじお

それでは実際にフローを作成していきたいと思います。
今回はテストのため、インスタントクラウドフローで作成していきたいと思います。

ぽこがみさま

関数の入力にはPower Automateの試験的な機能の有効化を強くおすすめします。入力領域が広くなり入力がしやすくなります。

STEP
インスタントクラウドフローを新規作成します。
Power Automate インスタントクラウドフロー
STEP
「作成」アクションを追加します。

「データ操作」コネクタの中の「作成」アクションを追加します。見つからない場合は「データ操作」というキーワードで検索してみてください。

アクションにメール本文を張り付けます。このアクションの出力をメールと見立ててこちらから文字を抽出していきます。

STEP
作成アクションを追加します。(商品名の位置)
indexOf(outputs('作成'),'・商品名:')

▲step2と同様に「作成」アクションを追加します。

STEP
作成アクションを追加します。(製品番号の位置)
indexOf(outputs('作成'),'・製品番号:')
STEP
作成アクションを追加します。(製品名の取得)
substring(
    outputs('作成'),
    add(outputs('作成(商品名)'),5),
    sub(
        sub(outputs('作成_(製品番号)'),1)
        ,add(outputs('作成(商品名)'),5)
        )
)

▲こちらが最終的に商品名を取得するためのsubstring関数です。

2行目は、第1引数としてメール本文を渡しています。

3行目は、第2引数として抽出開始位置を渡しています。

4行目~7行目は、第3引数として商品名の文字数を渡しています。わかりづらい場合は先の画像「substring関数に渡す抽出文字数の考え方」をご覧いただき、1行ずつ確認してみてください。

まとめ

以上、この記事ではsubstring関数を使って文字数のわからない文字列を抽出する方法について解説しました。次回は正規表現を使ってさらに柔軟に文字列を抽出する方法について解説します。

>次の記事 正規表現を使って文字列抽出(準備中)

ノンプログラマーでも自動化スキルを身につける。

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる