【Power Automate Desktop】で受信メールの添付ファイルを自動保存

Power Automate Desktop

記事では、
Power Automate Desktopで受信したメールの添付ファイルを自動で保存する方法を解説しています

できること

日々、メールで受信する見積書、注文書、契約書等々、手動でダウンロードしてパソコンやファイルサーバーなどへ保存する機会があるのではないでしょうか

SaaSで帳票を取り扱うサービスがたくさんあるとはいえ、メールでのやり取りもなくならないものです
業界によっては、FAXでしかやり取りしない(できない)ところもあります・・・

紙は対応できませんが、Power Automate Desktopを活用すると、設定した条件に当てはまるメールを受信したら、添付ファイルを自動で保存することが可能です

前提条件

・メールソフトは、Outlook(classic)を利用(Outlook(new)は未対応)
・PADの手動実行は必要(ショートカット推奨)
・完全に自動化する場合は、Power Automate Premiumの有償ライセンスが必要

メールの添付ファイルを自動で保存する方法

構築するフローの全体像は次の通りです

1.Outlookを起動
2.設定した条件に当てはまるメールのデータを取得
3.添付ファイルをファイルサーバーへ移動

やることはシンプルです
必要なアクションについて解説します

1.Outlookを起動

Outlookからメールのデータを取得する事前準備を行います
使うアクションは、Outlook > Outlook を起動します
※フロー実行時は、利用中のOutlookは起動したままで大丈夫です

このアクションは特に設定する箇所はありません

2.設定した条件に当てはまるメールのデータを取得

Outlookのインスタンスが作成されたので、条件を設定してメールのデータを取得します
使うアクションは、Outlook > Outlook からメール メッセージを取得

▼アクションの詳細

アカウント

Outlookで利用しているメールアドレス(アカウント)を設定します

メール フォルダー

取得したいメールを受信しているフォルダーを設定します
受信トレイで受信している場合は、「受信トレイ」と設定
サブフォルダーで受信している場合は、完全なフォルダーパスを設定します
例えば、「受信トレイ\〇〇商事_請求書」のように、受信トレイの後ろに「\サブフォルダー名」で設定できます

取得

取得するメールの状態を指定できます
自動処理を行う場合、未読(未対応)から既読(対応済み)に自動処理することで実施状況を把握できますので、「未読のメール メッセージのみ」を選択することが多いです

既読としてマークします

メールのデータを取得した際、該当メールを既読メールとするかどうかの設定です
Outlook上のメールの状態を未読から既読へ変更するためにオンにします

本文をHTML形式で読み取る

本文をHTML形式で読み取る必要がある場合はオンにします
通常、オフのままで問題ありません

送信者が次を含む

取得したいメールの送信者のメールアドレスを設定します
その際、完全なメールアドレスである必要があり、「*@xxx.exsample.jp」のように、特定のドメインを条件に設定することはできません

以降の条件でメールが絞り込めて、複数の送信者がいる場合、空白にすることですべてのメールを取得できます

宛先が次を含む

取得したいメールを受信しているメールアドレスを設定します(例えば自分のメールアドレス)
送信者と同じく、完全なメールアドレスである必要があります
こちらも、空白にすることですべてのメールを取得できます

本文に次が含まれています

メールの本文で検索するキーワードを設定します
こちらは部分一致です

件名に次が含まれています

メールの件名で検索するキーワードを設定します
こちらは部分一致です

添付ファイル

条件に合ったメールの添付ファイルを取得するかどうかを選択します
添付ファイルを自動保存するためのフローですので、保存するを選択します

添付ファイルを次に保存します

添付ファイルを保存するフォルダーを指定します

生成された変数

条件に合ったメールの情報を変数に格納します
複数のメールを取得した場合もすべてのメール情報が格納されます

▼複数メール取得時のサンプル

上図では、3通のメールが条件にヒットしたため変数に格納されました
各アイテムの中身を確認するには、右側の「詳細表示」をクリックします
クリックすると下図の情報が展開されます
※添付ファイルがあるメールをサンプルで用意しました

1つのアイテムには、「.Attachments」から「.To」までの情報が含まれています
これらの情報を利用したい場合は、変数を使って次のように指定します

例えば、メールの添付ファイルの保存後のフルパスを利用する場合、
%RetrievedEmails[0].Attachments[0].Fullname% と指定します
Attachmentsの右側にある詳細表示をクリックすると、上記記述が必要なことがわかります
フルパスならFullname、ファイル名ならNameなど様々な情報を扱えます

メールの作成日付を利用する場合は、
%RetrievedEmails[0].Date% と指定します

数字の部分は、何番目のメールの情報を読み取るかを指定しています
上記の場合、[0]ですので、下図のアイテムが該当します

[0]のあとは、プロパティ属性を指定することで必要な情報を呼び出すことができます

RetrievedEmailsをFor eachで全件ループする場合も同じようにプロパティ属性を指定することで、必要な情報を呼び出すことができます

変数のプロパティ属性を利用してフローを組むことが基本ですので、この部分は何度もフローを組んで理解を深めましょう

3.添付ファイルをファイルサーバーへ移動

メールの情報が取得できましたので、添付ファイルをサーバーへ移動します
使うアクションは、ファイル > ファイルの移動

▼アクションの詳細

移動するファイル

前段で取得したメールの情報から、添付ファイルのフルパスを利用します
前述したとおり、変数のプロパティ値を利用して指定しています

宛先フォルダー

上記で設定したファイルをどのフォルダーに移動するのか、移動先を指定します
今回は仮のファイルサーバーとして例が記載されております

ファイルが存在する場合

宛先フォルダーに同じファイル名のファイルがあった場合の処理を設定します
「何もしない」を選択した場合は、上書き保存等せず、ファイルの移動は行われません
「上書き」を選択した場合は、確認ダイアログ等もなくファイルの上書きを実施します

メールの添付ファイルを取得して、ファイルを移動するフローは以上となります
日々、数秒、数分、手を動かせば出来る処理なので大した改善にはならないかもしれません
しかしながら、フローの実行もスケジュール実行で実施してしまえば、完全に人の手から離れます
Power Automate Desktopを利用して生産性の高いことをやっていきましょう

ポイント

  • Outlookアプリはclassic版のみ対応
  • Outlookアプリは起動状態のままでもフローの実行が可能
  • 条件の設定はいろいろ試してトライ&エラーが必要
  • 添付ファイルが複数ある場合は、For eachを使ってループ処理
  • 同じ名前のファイルが存在する場合のルール決めが重要
  • 複数メールがヒットする場合、添付ファイルが複数ある場合の処理を追加する

最後に

現代社会、メールは主力の連絡手段として欠かせません
情報共有の方法が色々と増えてきましたが、メールがなくなることはないでしょう

今回ご紹介したアクションをうまく利用することで、メール周りの細かな作業を0にできます
ただし、Power Automate Desktopのフローを手動で実行する必要があります
フローの実行まで自動化する場合は、M365のライセンスや実行端末と、Power Automate Premiumの有償ライセンスが必要です
※スケジュール実行の設定方法などは別途解説する予定です

今回のフローは、アクションとしては3つしか使っていないので、是非試してみてください

タイトルとURLをコピーしました