やりたいこと
- 特定のフォーマットで送られてくる問い合わせメールの内容をエクセルに転記して管理したい
- 例えば以下のフォーマットでメールがきたら
[対象製品]
テスト
[問い合わせ内容]
テストです
- エクセルにこう転記したい
Power Automateでフロー作成
Office365のメニューからPower Automateを起動し、[マイフロー]→[新しいフロー]→[自動化したクラウドフロー]を選択します。
フロー名は適当でOKです。フローのトリガーは「新しいメールが届いたとき(V3)」を選択して作成します。
Outlookから受信したメールを受け取る
「新しいメールが届いたとき(V3)」の設定をしていきます。
今回はテストとして自分から届いたメールのみを対象とします。実際に使う場合はシステムから送られるメールアドレスなど適切なものを設定してください。
メールの内容をパース
まずは、htmlメールをテキストで扱うために「Htmlからテキスト(プレビュー)」アクションを追加します。変換する対象は「本文」とします。(動的コンテンツから本文を選択してください)
次に対象の文字列を抽出するための変数を用意します。「変数を初期化する」アクションを作成してください。今回は、arrayという配列用の変数を作成しました。
サンプルを元に[対象製品]、[問い合わせ内容]という文字で区切って変数に格納します。値の部分の式は以下に記載しています。
split(split(outputs('Html_からテキスト')?['body'],'[対象製品]
')[1] , '[問い合わせ内容]
')
この部分は自分の処理させたいメールの内容と照らし合わせてロジックを考えてください。
参考までにsplit関数で改行を認識させるにはそのまま改行をいれないといけないみたいです。(\nや¥nを試してもダメでした)
Excelに転記する
最後に変数の内容やメールの受信日時をエクセルに転記するための「表に行を追加」アクションを追加します。
この「表に行を追加」アクションで追記を行う場合、対象のエクセルにはテーブルを作成する必要があります。そのため、新規のエクセルをOneNoteなどPowerAutometeからアクセスできる場所に作成し、対象のセルを[挿入]→[テーブル] からテーブルとして作成します。
PowerAutomateの画面に戻り、テーブルを指定すると自動的に書き込み先のセルを補完してくれます。あとは、準備しておいた変数を利用してエクセルに書き込む設定を行います。
詳細は省略しますが、受信日時はGMTから変更して形式を変更したり、配列の変数から改行を削除したりしています。(改行を削除した変数がproductとdescriptionです。)
あとはフローを保存して完了です。メールを受信すると自動でエクセルに追記されます!
おわりに
そもそも今どきメールで受信せずにTrelloとかサービスで問い合わせ管理するよねってツッコミはあると思いますが、既存の仕組みのまま少しづつ改善をしていこうと思うとPowerAutomateのような自動化ツールが効果的だったりします。また、Excelでデータを独立して管理しておくとあとでこのデータを分析したり、別のアプリで活用したりと疎結合にできるのも個人的には好きなポイントです。