# Outlookアプリケーションを作成または既存のOutlookプロセスに接続
$Outlook = New-Object -ComObject Outlook.Application
# ブラウザ画面で選択しているメールを取得する時は1行目、
# ポップアウトメールを取得する時は2行目
# MailItem = $Outlook.ActiveExplorer().Selection[1]
$MailItem = $Outlook.ActiveInspector().CurrentItem
# メールアイテムが見つからない場合にメッセージを表示して終了
if ($MailItem -eq $null) {
Write-Host "Mail item not found. Press Enter to exit."
Read-Host
exit
}
# 一時フォルダを作成
$tempFolder = New-Item -ItemType Directory -Path "$env:USERPROFILE\Desktop\temp" -Force
# 会議招集を作成
$Meeting = $Outlook.CreateItem(1) # 1はolMeetingItemを表します
# 会議の本文フォーマットをテキスト形式に変更
$Meeting.BodyFormat = 1 # 1はolFormattextを表します
# 会議のタイトルを設定
$Meeting.Subject = $MailItem.Subject
# 会議本文にメールの内容をそのまま追加
$Meeting.Body = "`r`n-----Original Message-----`r`n" + $MailItem.Body
# メールアイテムの添付ファイルを一時フォルダに保存し、会議に添付
foreach ($Attachment in $MailItem.Attachments) {
$attachmentPath = Join-Path $tempFolder.FullName $Attachment.FileName
$Attachment.SaveAsFile($attachmentPath)
$Meeting.Attachments.Add($attachmentPath)
}
# 必須参加者と任意参加者のメールアドレスを格納するための配列を初期化
$requiredAttendees = @()
$optionalAttendees = @()
# メールアイテムの受信者から必須参加者と任意参加者を分けて取得
foreach ($recipient in $MailItem.Recipients) {
if ($recipient.Type -eq 1) {
$requiredAttendees += $recipient.Address
} elseif ($recipient.Type -eq 2) {
$optionalAttendees += $recipient.Address
}
}
# 必須参加者を会議に追加
foreach ($attendee in $requiredAttendees) {
$Meeting.RequiredAttendees = $Meeting.RequiredAttendees + $attendee + ","
}
# 任意参加者を会議に追加
foreach ($attendee in $optionalAttendees) {
$Meeting.OptionalAttendees = $Meeting.OptionalAttendees + $attendee + ","
}
# メールアイテムを閉じる
$MailItem.Close(1)
# 会議を表示
$Meeting.Display()
# 一時フォルダを削除
Remove-Item -Path $tempFolder.FullName -Recurse -Force
# スクリプトの実行が完了してもウィンドウを閉じない
# Read-Host "Press Enter to exit."
コメントを残す