Power Automate DesktopでOutlookから取得したメールを1件ずつ表示・抽出する方法

secretary IT

Outlookからメールメッセージを取得します」で取得したメールメッセージはリスト形式、つまり全部ひとまとめになった状態で取得される上に、中身を表示することができません。
ここでは実践編としてFor eachを使用してメールを1件ずつ整理して、プロパティでタイトルと本文を取得してExcelに貼り付けたいと思います。

スポンサーリンク

メールの取得

pad outlook 振り分け1
テスト用にアカウント作って、いくつかメールを送っておきました。
pad outlook 振り分け2
Outlookからメールメッセージを取得しますでInboxフォルダのすべてのメールを取得し、メッセージボックスに表示してみると、
pad outlook 振り分け3
こうなります。取得したメールが全部いっしょくたになっており、かつ本文を読むことができません。
pad outlook 振り分け4
これをどうするかという話なのですが、まずOutlookからメールメッセージを取得しますで取得した変数(デフォルトではRetrievedEmails)を確認すると、リスト形式になっていることがわかります。
pad outlook 振り分け5
さらにリストの中のアイテムの詳細を確認すると、.Subjectプロパティでメールタイトル、.Bodyプロパティがメール本文に割り当てられているらしいことがわかります(参考)。

メールを1通ずつ取得

pad outlook 振り分け6
まずリストになった変数のそれぞれのアイテムを取得する方法ですが、For eachアクションの中にリストを入れると、リストの項目1つにつき1回ループしてくれます。
pad outlook 振り分け7
For each反復処理を行う値に取得した変数を指定します。
pad outlook 振り分け8
試しにメッセージボックスでFor eachの変数を出力してみると、
outlook 振り分け
こんな感じで、1通ずつに分解されて処理されることが確認できます。処理は取得したメールの数だけ繰り返されます。

プロパティ(タイトルと本文)の取得

pad outlook 振り分け9
取得したメールからプロパティの内容を取り出すには、変数の後に.プロパティ名をくっつけます。この場合.Subjectでタイトル、.Bodyで本文を取得します。
pad outlook 振り分け10
実行結果です。1通ずつタイトルと本文が取得された状態になりました。

他に.Dateで日付、.Fromで送信元のメールアドレス、.Toで送信先が取得できます。.Bcc.Ccも取得可能。

Excelに貼り付け

pad outlook 振り分け11
ここから先は用途や各人の環境によって設定が異なると思うので、ひとつの例として。適宜改良してご利用ください。
まずExcelを起動し、
pad outlook 振り分け12
ループカウント用に変数変数の設定で初期値が1の変数を作って、
pad outlook 振り分け13
ループの終わりに変数の値を1増やします。
pad outlook 振り分け14
Excelワークシートに書き込みを使って、1列目(変数)行目にタイトル、2列目(変数)行目に本文を書き込みます。
ループごとに取得しているメールはひとつだけなので、1行目には1通目、2行目には2通目のメールのタイトルと本文が記載されることになります。
pad outlook 振り分け15
実行結果です。ここまでのフローは下記をコピペすると再現できます(メアドなど要変更)。

Outlook.Launch Instance=> OutlookInstance
Outlook.RetrieveEmailMessages.RetrieveEmails Instance: OutlookInstance Account: $'''sunasunagitsune@hotmail.com''' MailFolder: $'''Inbox''' EmailsToRetrieve: Outlook.RetrieveMessagesMode.All MarkAsRead: True Messages=> RetrievedEmails
Excel.LaunchExcel.LaunchUnderExistingProcess Visible: True Instance=> ExcelInstance
SET NewVar TO 1
LOOP FOREACH CurrentItem IN RetrievedEmails
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Subject Column: 1 Row: NewVar
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem.Body Column: 2 Row: NewVar
    Variables.IncreaseVariable Value: NewVar IncrementValue: 1
END
Microsoft Power Automate Desktop(PAD)アクション、使い方一覧
Power Automate Desktopの使い方を機能・分類別に参照できるまとめです。

コメント