Biz→PS
デスクトップのOutlookアプリケーションから、受信メールの一覧を作成する処理の自動化を検討したのですが、Outlookのエクスポート機能では目的が達成できなかったり、OutlookアプリケーションをGUI操作する方法では実装上の不安材料が複数あったりと、課題が見つかったので、『受信メールの一覧作成には、Outlook APIを使って部品を自作するしかない!』という結論に達しました。

■メールエクスポートの課題
Outlookのエクスポート機能を使ったのですが、1回の操作ですべての受信メールをCSVファイルに出力できるのは良かったものの、メールアドレスが意図した内容で出力されなかったり(※1)、受信日時が取得できないなど使い勝手が良くありません。
(※1)電子メール アドレスのエントリの種類がSMTP(インターネット アドレス)なら一般的なメールアドレスの形式になっているけど、EX(Microsoft Exchange サーバー アドレス)だとそうならないようです。たとえばMicrosoft 365 Businessドメインのメールアドレスは、エントリの種類がEXになります。

そこで、Outlookのエクスポート機能を諦め、Power Automate for DesktopのOutlookアクションを試してみました。%CurrentItem.Date%で受信日時は取得できましたが、%CurrentItem.['From']%、%CurrentItem.['To']%、%CurrentItem.Cc%で取得したメールアドレスは、Outlookのエクスポート機能で出力した内容と同じで、通常のメールアドレス形式ではありませんでした。
かと言って、Outlookアプリケーションでメールを表示してメールアドレスを取得するには、送信者表示や宛先表示の位置にマウスを移動してポップアップが表示したら、さらに[連絡先]欄に表示するメールアドレスにマウスを移動して、右クリックして[電子メールのコピー]を行う方法しかありません。この手順を受信トレイのすべてのメールについてそれぞれ実行すれば目的は達成できそうですが、ホップアップ表示を待つ仕掛けや、右クリックする位置にマウスを移動する仕掛けが必要になるなど、実装上の不安材料があります。

OlkExport4DA

■BizRobo!ロボットからOutlook APIを使う方法
Outlook APIを使うOutlookドライバーを外部アプリケーション(PowerShellスクリプト)として用意します。
Desktop Automationステップで「Set Clipboard」を使って、Outlook操作コマンドをクリップボードに書き込みます。
Outlookドライバーがクリップボードからコマンドを読み出して、Outlook APIを使ってOutlookを操作します。

■ダウンロード
上記で紹介した内容は、「ROBOT-HUB」で公開中です。PoweShellスクリプト例や動作確認用のロボットを、下記URLからダウンロードすることができます。

【共通部品】DAでのOutlook操作(受信メールエクスポート)API実装部品

「ROBOT-HUB」では共通部品を無料でダウンロードできます!