Outlookでは受信トレイ以外にも、プロジェクトや取引先ごとにフォルダを分けて管理することが一般的です。PowerShellを使えば、Outlookの任意のフォルダにある未読メールを抽出して一覧表示することが可能です。本記事では、その実装方法を紹介します。
Outlookアプリケーションに接続する
まず、PowerShellでOutlookに接続するための準備を行います。以下のスクリプトはOutlookのCOMオブジェクトを利用してアクセスを開始します。
$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNamespace("MAPI")
特定のフォルダを取得する
次に、特定のフォルダ(例:受信トレイ直下の「サポート」フォルダなど)を取得します。以下のコードでは「サポート」という名前のフォルダを指定しています。
$folderName = "サポート"
$inbox = $namespace.GetDefaultFolder(6) # 6 = 受信トレイ
$targetFolder = $inbox.Folders.Item($folderName)
未読メールを抽出して一覧表示
指定したフォルダ内の未読メールのみを対象にし、件名・差出人・受信日時を一覧表示します。
$unreadItems = $targetFolder.Items.Restrict("[UnRead] = true")
foreach ($mail in $unreadItems) {
Write-Output "件名: $($mail.Subject)"
Write-Output "差出人: $($mail.SenderName)"
Write-Output "受信日時: $($mail.ReceivedTime)"
Write-Output "-----------------------------"
}
注意点
フォルダ名はOutlook上の表示名と完全に一致している必要があります。また、サブフォルダにアクセスする場合はネストした参照が必要です。
# 例:受信トレイ > サポート > 障害報告
$subFolder = $inbox.Folders.Item("サポート").Folders.Item("障害報告")
まとめ
PowerShellを活用することで、Outlookの任意のフォルダから未読メールだけを抽出し、件名や差出人を一覧表示できます。日常の業務で重要なメールを見逃さない仕組みや、定期的なチェック処理の自動化に応用できます。タスクスケジューラと組み合わせれば、さらなる効率化が可能です。