Power Automateについて詳しく解説します
【完全版】Power Automate Desktopでメールを自動化する全方法
- メール本文から任意のテキストを思い通りに抽出したい
- 抽出したテキストを使って、Excelに転記したい
当記事では、上記の疑問にお答えします。
メール本文から任意のテキストを抽出できると様々な業務に応用できますが、その大半は手作業で行うことが多いのではないでしょうか。
テキストを抽出するときに正規表現を使えば、あらゆるテキストを自由自在に抽出できます。
そこで当記事では、Power Automate Desktopで正規表現を使ってメール本文からテキストを自由自在に抽出する方法を解説します。
抽出したテキストをExcelに転記する方法についても解説しますので、ぜひ1度読んでみてください。
なお、Power Automate Desktopの利用方法・起動方法は、以下の記事をご覧ください。
目次
著:やまもとてつや
Tipstour初の電子書籍化! 37歳で初の正社員となりITヘルプデスクとして勤務中の著者が、Power Automate Desktopを使った8つのメール作業・自動化事例とその方法を本書でご紹介しています。 これを読めば、ヘルプデスクの担当者はもちろん、WindowsPCで作業するすべてのワーカーの面倒なメール作業を自動化可能です。 Kindle Unlimitedで読み放題対象! |
【前提】正規表現とは?
正規表現は、特定のテキストを検索したり抽出したりするために使う方法です。
単一の文字列だけでなく、特定の文字から文字までの範囲といった複雑な条件でも抽出できます。
たとえば、私達が普段何気なく使っている改行も正規表現であれば\r\nと書きます。
Power Automate Desktopでは.NETの正規表現を使って、任意のテキストを抽出可能です。
テキスト抽出に使う正規表現一覧
テキスト抽出によく使う正規表現を表にまとめました。
下記にあげた正規表現以外を知りたい場合は、Microsoftが提供しているクイックリファレンスをご覧ください。
正規表現 | 説明 | 例 |
---|---|---|
\r\n | Windows形式の改行にマッチする | Hello world |
\d | 数字にマッチする | 1234, 5, 9 |
\w | 単語構成文字にマッチする(英数字とアンダースコア) | hello, world_123 |
\s | 空白文字(スペース、タブ、改行など)にマッチする | Hello world, Hello world, Hello\nworld |
. | 改行以外の任意の1文字にマッチする | hoge, 123, あ |
[...] | 角括弧内の任意の文字にマッチする | [abc], [0-9], [a-zA-Z0-9_] |
【方法】正規表現を使ってメール本文から任意のテキストを抽出する
では、実際に正規表現を使ってメール本文から任意のテキストを抽出してみましょう。
【ステップ①】抽出したいテキストのあるメールを絞り込む
まずは、抽出したいテキストのあるメールを特定しましょう。
OutlookであればOutlookアクションのメールメッセージを取得を使い、Outlook以外であればメールアクションのメールメッセージの取得を使います。
どちらもメールフィルターを使用して、件名や送信元などでメールを絞り込むのは共通です。
今回は下記のメール署名を使って、抽出してみます。
それぞれのメール取得方法は下記の記事を参考にしてください。
【ステップ②】メールの本文を取得する
署名欄の:以降をそれぞれ抽出してみましょう。
取得したメールは変数RetrievedEmailsに格納されますが、単体ではテキストを抽出できません。
そこでFor Eachを使ってテキストをリスト化する必要があります。
ループアクション欄にあるFor Eachを中央にドラッグ&ドロップしてください。
下記画面に変わったら、そのまま保存します。
これでメールが変数CurrentItemに格納され、プロパティを使って本文が取得可能になりました。
メール本文はBodyTextプロパティを使って取得します。
なお、この手順は取得したいメールが1つだけでも必要です。
【ステップ③】正規表現を使って任意のテキストを抽出する
メール本文を取得できる準備が整ったら、いよいよテキストを抽出します。
For Eachアクション内に、テキストアクション欄にあるテキストの解析をドラッグ&ドロップします。
以下画面に切り替わります。
まずはNAME:にある名前を抽出したいので、ひとまず以下のように入力してください。
- 解析するテキスト:%CurrentItem.BodyText%
- 検索するテキスト:\r\nNAME:.*\r\n
- 正規表現である:オン
メール本文はCurrentItemにBodyTextプロパティをつけて抽出できます。
検索するテキストが当記事のハイライトになるので、順を追って解説します。
まず、\r\nは改行を表す正規表現です。
次に.*ですが.(ドット)は:以降の任意の1文字を指し、.に*(アスタリスク)をつけると改行までの文字列が全て取得できます。
フローを実行すると、抽出したテキストは変数Matchに格納されます。
以降同じ手順を3回行うので、変数名をNameに変えましょう。
生成された変数のMatchをクリックしてください。
画面が変わるので、再度Matchをクリックして編集します。
編集できるようになるので、%間でNameと入れましょう。
編集したら、再度フローを実行してみましょう。
変数Nameを確認すると以下のようになっています。
このままExcelに転記すると改行も入ってしまうので、改行を処理する手間がかかります。
改行を取り除くため、テキストアクション欄にあるテキストのトリミングをドラッグ&しましょう。
注意点としてテキストのトリミングは2種類あり、下にあるテキストをトリミングをドラッグ&ドロップしてください。
画面が変わったら、トリミングするテキストに先ほどの変数Nameを入力します。
生成された変数はNameに変えておきます。
変数を再度生成すると中身だけが変わるので、同じ変数名にして管理しやすくするのが狙いです。
ここまで入力してフローを実行するとNameは下記画像のようになっています。
最後にNAME:を消しましょう。
テキストアクション欄にあるテキストを置換するをドラッグ&ドロップしてください。
画面が変わります。
以下のように入力してください。
- 解析するテキスト:%Name%
- 検索するテキスト:NAME:
- 置き換え先のテキスト:%''%
置き換え先のテキストは%間に入力します。
NAME:を削除したいので、空白を表す''を入力しましょう。
入力したら変数ReplacedをNameに変更するのも忘れないでください。
ここまでできたら、フローを実行します。
Nameは下記画像のようになっているはずです。
あとは署名の項目だけ同じようにフローを作りましょう!
と、いいたいところですが全部同じでは芸がないのでBLOG URLの項目だけ少し変えてみましょう。
BLOGとURLの間には、半角スペースがあります。
わざわざBLOG URLと検索しなくてもいいので、URLだけを取得しましょう。
したがって、BLOG URLで検索するテキストは下記になります。
トリミング時はトリミング対象を末尾の空白文字に変更しておきましょう。
ここまでフローを作成すると下記のようになります。
6以降です。
最後です。
【ステップ④】Excelに転記する
全て抽出し加工したら、Excelに転記してみましょう。
管理がしやすくなるように、Excelの転記だけはサブフローにまとめておきます。
中央にあるサブフローをクリックして、新しいサブフローをクリックしてください。
サブフロー名をつけたら、保存します。
自動で作成したサブフローに移ります。
Excelアクションにある、Excelの起動を中央にドラッグ&ドロップしましょう。
画面が切り替わるので、そのまま保存します。
次にExcelワークシートに書き込むをドラッグ&ドロップします。
画面が変わったら、書き込む値に今までに加工した変数を入れていきます。
今回は変数を下記のようにしました。
- 名前:Name
- 電話番号:Tel
- メールアドレス:Mail
- URL:Url
そして、以下のように入力します。
- 書き込む値:各変数
- 書き込みモード:指定したセル上
- 列:2(変数ごとに1ずつ足してください)
- 行:2
すると、作成したサブフローは下記のようになります。
ここまで入力できたら、いったんMainフローに戻ります。
フローの最後にフローコントロールアクションにあるサブフローの実行をドラッグ&ドロップします。
画面が変わったら、先ほど作成したサブフローを選んで保存します。
ここまでできたらフローを実行しましょう。
すると下記のようになります。
抽出したテキストをExcelに転記できました!
まとめ
以上、メール本文からテキストを抽出し、Excelに転記するまでの手順を解説しました。
正規表現は覚えるのが大変ですが、慣れたらかなり便利です。
今回、紹介したケースをもとに正規表現を勉強して効率的に取り出せるようになると、より仕事がしやすくなるでしょう。
Excelの転記では新規ファイルを使いましたが、あらかじめ見出しを用意したExcelファイルを使っても構いません。
ぜひ、今回の内容をもとに色々と試してみてください。