【Power Automate】特定の宛先で受信したメールをエクセルに出力する
2021-12-3 | M365, Power Automate
M365環境下で特定の宛先で受信したメールをエクセルに出力したい!
例えば、問い合わせ用のグループメールアドレスを作っておいて、そこで受信したメールをエクセルに登録して行くことを想定してます。
皆さん、ローコード開発は好きですか?私は逆に覚えることが多いように感じてあまり好きじゃないです!!!
仕様書
- 特定のメールアドレス宛にメールが届いたら、指定のxlsxファイルにメールの内容を出力する。
- xlsxファイルは、OneDrive、または、SharePointに保管する。
- IDはメールを受信する度に1ずつインクリメントする。
手順書
出力先のxlsxファイルの準備
受信したメールの情報を記録する下記の表のようなテーブルをOneDrive(またはSharepoint)上に保管されたxlsxファイルの中に作る。
ID | Datetime | From | Subject | Body |
---|---|---|---|---|
1からカウント開始 | メールの受信日時 | メールの発信先メールアドレス | メールの件名 | メールの本文 |
- OneDriveなり、SharePointなりに出力先のxlsxファイルを作る。今回は、
mail2excel.xlsx
と言う名前のファイルを作った。 - テーブルを作成する。ヘッダー行の一部を選択した後にタブ「挿入」の中の「テーブル」をクリックする。
- ダイアログが表示されるので、「先頭行をテーブルの見出しとして使用する」にチェックを付け「OK」をクリックする。
- 範囲に色が付き、フィルターが適用されたような表示になる。
Power Automate でフロー作成
Power Automateでフローを作る。フローは完成すると下記のような感じになる。
- Power Automateにアクセスして「マイフロー」->「新しいフロー」->「自動化したクラウド フロー」の順にクリックする。
- 「フロー名」は任意の名前、「フローのトリガーを選択してください」には「新しいメールが届いたとき(V3)」を設定する。
- 「フローの編集」へ推移するので「新しいメールが届いたとき(V2)」を設定する。
「フォルダー」は「Inbox」、「宛先」はメールを受け取るメールアドレス(今回は例として「inquery@example.com」とする)を入力する。
- 新しいステップ「タイム ゾーンの変換」を追加する。
「基準時間」は動的コンテンツから「受信日時」、「変換元のタイムゾーン」は「(UTC)協定世界時」、「変換先のタイムゾーン」は「(UTC+9:00)大阪、札幌、東京」、「書式設定文字列」はカスタム文字列として「yyyy-MM-dd HH:mm:ss」と入力する。
- 新しいステップ「変数を初期化する」を追加する。
名前は「日時」、種類は「文字列」、値は動的なコンテンツにある「変換後の時間」とする。名前は任意で良い。
- 新しいステップ「表内に存在する行を一覧表示」を追加する。
場所、ドキュメントライブラリ、ファイル、テーブルで出力先の xlsx ファイルとテーブルを指定する。
- 新しいステップ「変数を初期化する」を追加する。
名前は「行情報」、種類は「アレイ」、値は動的なコンテンツにある「value」とする。名前は任意で良い。
- 新しいステップ「変数を初期化する」を追加する。
名前は「行数」、種類は「整数」、値は式で「length(variables('行情報'))
」とする。
- 新しいステップ「変数の値を増やす」を追加する。
名前は「行数」。値は「1」とする。
- 新しいステップ「表に行を追加」を追加する。
場所、ドキュメントライブラリ、ファイル、テーブルで出力先の xlsx ファイルとテーブルを指定する。その下にテーブルの列が表示されているはずなので ID は「行数」、Datetime は「日時」、From は「差出人」、Subject は「件名」、Body は「本文のプレビュー」[1] をそれぞれ動的なコンテンツから設定する。
- 画面の右上の「保存」をクリックしてフローを保存する。
[1] 「本文」にすると HTML やらヘッダー情報やらが表示されて xlsx ファイル上では見辛くなる。
テスト
- 画面の右上の「テスト」をクリックする。
- 「手動」にチェックを付けて「テスト」をクリックする。
- 「今すぐ動作を確認するには、受信トレイで新しいメールを送信します。」と表示されるので、「新しいメールが届いたとき(V2)」の「宛先」に設定したメールアドレス宛にメールを送信してみる。
- 正常にフローが実行されたか確認する。
- xlsxファイルにメールの内容が出力されているか確認する。(プライバシーガードが発動中)
まとめ
こういうローコード開発って慣れれば、素早く目的を達成できるような気もする。しかし、大量のコンポーネント的なものの使い方を覚えるまでが大変だ…。…大変だ…。