OCRした請求書や受信したメール本文から日付や請求金額だけを抜き出したい場面は、業務でよくあるものです。
しかし、「正規表現」と聞くと難しそうに感じることも多いでしょう。
そこで今回は、受信したメールから請求金額だけを抽出する方法を、正規表現を使うケースと使わないケースの2通りで紹介します。
◆ 正規表現を使わない方法
まず、メール本文を取り出します。
※メール本文の抽出方法については、以下の記事を参照ください。
例として、メール本文に「お支払い金額は ¥12,345 です。」と書かれているとします。
テキストのトリミングアクションを使う
-
元のテキスト:取り出したメールのテキスト(例:
%EmailBody%
) -
モード:「指定された2つのフラグの間にあるテキストを取得する」
-
開始フラグ:「お支払い金額は」
-
終了フラグ:「です。」
変数%CroppedText%
の中に「¥12,345」が格納されます。
これを「テキストの数値に変換」アクションを使って数値化する、もしくはそのままテキストとして利用できます。
◆ 正規表現を使う方法
テキストを置換するアクションを使用する
-
解析するテキスト:
%EmailBody%
-
検索するテキスト:
.*?(¥?\d[\d,]*円?).*
-
置き換え先のテキスト:
$1
-
「検索と置換に正規表現を使う」にチェックを入れる
変数%Replaced%
に「¥12,345」が格納されます。
◆ 何が違うのか?
どの方法を使ってもテキストが取得できれば問題ありません。
しかし、正規表現を使う場合、テキストを取得しやすくなります。
例えば、正規表現を使わない方法では「お支払い金額は」が「ご請求額は」に変わると取得できません。また、実際に実務では開始や終了のフラグがなく、いきなり「12,345円」などの金額が発生することも少なくありません。
そこで、正規表現を使うと、「このルールに合うテキストを探す」という指示ができるため、さまざまなケースに対応可能です。
◆ 金額を抜き出すための正規表現ルール
-
数字を探す →
\d+
-
3桁区切りのカンマがあるかもしれない →
.*?(\d{1,3}(,\d{3})*)
-
通貨記号 ¥ や 円 がつくかもしれない →
.*?(¥?\d{1,3}(,\d{3})*円?).*
📌 このルールを使うと…
テスト文字列 | 抜き出せる値 |
---|---|
お支払い金額は ¥12,345円 です。 | ¥12,345円 ✅ |
請求額 123,456 円 | 123,456円 ✅ |
残高: ¥1,234,567 | ¥1,234,567 ✅ |
合計 56789 | 56789 ✅ |
12.34ドル | 取れない ❌(円のみを対象にしているため) |
※一般的には .*?(¥?\d{1,3}(,\d{3})*円?).*
が適切に思えるかもしれませんが、Power Automate Desktopでは .*?(¥?\d[\d,]*円?).*
の方が正しく動作するため、この記事ではこちらを使用しています。
◆ まとめ
✔ 正規表現なし:特定のフレーズが固定されているならOK
✔ 正規表現あり:異なる表現や形式にも対応できる
正規表現は難しく感じることもあるかもしれませんが、基本的にはコピペでOKです。
(かくいう筆者も正規表現アレルギーなので、基本的には何も理解しておりません。動けばいいのです…)
実際に試してみて、自分に合う方法を選んでいきましょう!
▼抜き出した金額を使って請求書を発行する
▼複数添付ファイルをつけて送信
▼ 役に立ったらブックマークお願いします!