
PowerAutomateを使ってOutlookで受信したメールをExcelに記帳できるようになったけど、メール本文から上手く文字を抽出できない。メール送信者が空白や改行を勝手に行うので、Excel台帳に反映させると、空白(スペース)や改行が反映されてしまい、見にくい。

空白や改行は簡単にreplaceを使って消すことができます。そのやり方をご紹介します。
事例
Outlookでメール(件名が「請求書」と記載されているもの)を受信したら、SharePoint上にあるExcelファイルの各項目を入力する作業を自動化することとします。
このとき、Excelファイルの各項目は、受信日、送信者、請求者、請求金額とします。受信日はOutlookメールを受信した日、送信者はメールの送信者としますが、請求者と請求金額は、次のとおりメール本文の一部から抜き出します。
しかし、次のようなメールを送ってくる人が多いので改善したいと考えています。

上記のメールを受信すると、こうなってしまう。

※前提条件として、Outlook、SharePoint、Excelも使って対応するやり方になります。
事前準備
事前準備として、スペースや改行を考慮せず、フローを作成します。その作り方は以下の2つの記事をご参考ください。
対策
1)スペース削除
①Htmlからテキスト(本文)とテキストの位置の検索(請求者)の間の+をクリックする。
②変数を初期化するを選択する。

③各項目を入力する。件名には(空白削除)と入れる。名前は空白削除、タイプは文字列、値はfxを入れる。
※気を付ける点として、タイプは文字列になるので、注意してください。
④コードには、replace(body(‘Htmlからテキスト_(本文)’),’ ’,”)と入力する。
※body(‘Htmlからテキスト_(本文)’)は動的コンテンツから選択します。
※「’ ’」は間にスペースを1つ入れ、「”」は間にスペースを入れません。これにより、スペースありが、スペースなしに代わるという指示になり、スペースを消すことができます。

※スペースには全角スペースと半角スペースがあるので、2つ同じアクションを追加すると便利です。
2)改行削除
①変数を初期化する(空白削除)とテキストの位置の検索(請求者)の間に変数を初期化するを追加する。
②項目を入力する。件名には、(改行削除)を追加し、名前は改行削除、タイプは文字列、値にはfxを入れる。

③コードには、次のとおり入力する。
replace(replace(replace(variables(‘空白削除’), decodeUriComponent(‘%0D%0A’), ”), decodeUriComponent(‘%0A’), ”), decodeUriComponent(‘%0D’), ”)
※このままデータを入れた方が楽です。variables(‘空白削除’)は変数を初期化する(空白削除)で用いた文字列となります。

3)Htmlからテキスト(本文)を引用している箇所を変数(改行削除)に置き換える
上記手続きによりスペースと改行がない文字列が「変数(改行削除)」で作られたので、今まで使用していた「Htmlからテキスト(本文)」を置き換えていきます。
テキストの位置の検索置換


部分文字列置換


4)テスト
では実際にテストしていきます。すると、スペースと改行がなくなり反映されます。


まとめ
以上がスペースと改行を消す方法です。そんなに難しくはないかと思います。次に、この台帳自動化で困ることは、返信や転送メールも反映されてしまうことかと思います。次回は、返信や転送メールは受け付けなくする方法を解説したいと思います。





コメント