
PowerAutomateを使ってOutlookで受信したメールをExcelに記帳できるようになったけど、もう少し、効率化したい。メール本文の一部を抜き取り、Excel台帳に記帳することはできないのかなぁ

PowerAutomateではメール本文の文字を抽出することもできます。今回はそのやり方のひとつとして、「部分文字列」の使い方をご紹介します!
事例
Outlookでメール(件名が「請求書」と記載されているもの)を受信したら、SharePoint上にあるExcelファイルの各項目を入力する作業を自動化することとします。
このとき、Excelファイルの各項目は、受信日、送信者、請求者、請求金額とします。受信日はOutlookメールを受信した日、送信者はメールの送信者としますが、請求者と請求金額は、次のとおりメール本文の一部から抜き出します。

※前提条件として、Outlook、SharePoint、Excelも使って対応するやり方になります。
※受信日、送信者の記載方法については、以下の記事のとおりになりますので、割愛させていただきます。
事前準備:Outlookで受信したメールを記帳するExcel台帳を作成する
事前準備として、Excelファイルに項目を入れて、テーブルを設定して、SharePointに格納してください。

新しいメールが届いたとき(V3)→タイムゾーンの変換→Htmlからテキスト(件名)→Htmlからテキスト(本文)までを作成する。
こちらは、前回同様なので、以下の記事を参考に作成してください。
できあがりは次のとおりです。

メール本文から抜き出したい箇所を抽出する方法
1)概要
ここからが今回の重要ポイントになります。今回、メール本文からピックアップしたい箇所は、以下のフォーマットに従い、請求者は、「請求者:」と「請求金額:」の間の文字、請求金額は、「請求金額:」と「備考:」の間の文字になります。

そのため、まずは、メール本文の「請求者:」、「請求金額:」、「備考:」を見つけ出す作業として、「テキストの位置の検索」を使います。次に、「請求者:」という4文字目の後からスタートして、「請求金額:」までの場所を特定するために「変数を初期化する」を用いて数値化し、「部分文字列」を使って特定した箇所を抜き出します。
初めて聞くと、よくわからないかと思いますので、今後の流れとして、「テキストの位置の検索→変数を初期化する→部分文字列」となることくらいを理解しておいてください。
2)テキストの位置の検索
①Htmlからテキスト(本文)直下の+をクリックする。
②テキストの位置の検索を選択する。

③ここでは、「請求者:」の位置検索を行いたいのでタイトルに(請求者)とつけておく。
④テキストには、⚡マークから「Htmlからテキスト(本文)」を選択する。
⑤検索するテキストには「請求者:」と入力する。

⑥①から⑤の作業を請求金額と備考についても行う。

3)変数を初期化する
①「テキストの位置の検索」直下のプラスをクリックする。
②「変数を初期化する」を選択する。

③変数を初期化するの件名に(請求者)をつける。
④名前には、「請求者」、⑤タイプには「変数」と入力する。
⑥値にカーソルを合わせて、fxマークを選択する。

⑦コードを入力できる箇所が表示されたら、add()と入力する。
⑧add()の()ないにカーソルを合わせて、動的コンテンツからテキストの位置の検索(請求者)を選択する。
⑨続けて、「,4」と入力する。※4は「請求者:」の4文字という意味です。
※⑦から⑨の作業で、「add(body(‘テキストの位置の検索(請求者)’),4)」と入力されます。
⑩コード入力箇所の下部に追加や更新ボタンがあるので、それを押して、パラメーターの値に式が入ったことを確認する。

⑪続いて、変数を初期化する(請求者)の直下に再度「変数を初期化する」を追加する。
⑫変数を初期化するの件名に(請求者len)と追加する。
⑬パラメーター内には、名前は「請求者len」、タイプは「整数」、値としてfxマークを選択する。

⑭コード入力箇所には、sub()と入力し、()内に、動的コンテンツからテキストの位置の検索(請求金額)を選択し、「,」(カンマ)を入れてから、動的コンテンツから変数(請求者)を選択します。
※コードとしてはsub(body(‘テキストの位置の検索(請求金額)’),variables(‘請求者’))となります。
4)部分文字列
①変数を初期化する(請求者len)の直下の+をクリックする。
②部分文字列を選択する。

③部分文字列の件名に(請求者)をつける。
④パラメーターのテキストには⚡マークをクリックしてHtmlからテキスト(本文)を選択する。開始位置は、⚡マークから変数(請求者)を選択する。詳細パラメーターから長さを表示させて、⚡マークから変数(請求者len)を選択する。

⑤変数を初期化する(請求者)→変数を初期化する(請求者len)→部分文字列(請求者)の一連で「請求者:」後の文字が抽出できるので、同様の作業を請求金額についても行う。

5)エクセル表に行を追加
ここからは抽出した文字を反映していきます。
①表に行を追加を選択する。
②パラメーターの上部に、作成したエクセルテーブルがどこに保存されているか記入する。
③詳細パラメーターを表示させ、入力していく。請求者には部分文字列(請求者)、請求金額には、部分文字列(請求金額)を追加する。

6)テスト
保存→テストを実施して、メールを受信してみてください。そうすると、台帳に記帳され、フローには「ご利用のフローが正常に実行されました。」と表示されます。



まとめ
今回はメール本文から指定箇所を抽出してExcel台帳記帳する方法を説明しました。しかし、これでは。「山田商店 株式会社」とスペースを作って送信したり、改行を含めて、送信したりするとそれが、反映されてしまいます。スペースや改行を消す方法を次回ご紹介したいと思います。
その他、今後、返信・転送メールを受け付けない方法やSharePoint上にフォルダーを作ってメールを保管させる方法等も紹介していきます。




コメント