2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

毎日決まった時間にOutlook内を確認するPowerShell

Last updated at Posted at 2024-11-18

毎日決まった時間に、日次バッチの完了メールが届いているかを確認するルーチンワークがありました。
さすがにこれを人間がやるのは平成の働き方を引きずり過ぎているので、自動化を試みました。

方針としては、以下の手順で実現します。
①Outlookの受信トレイを確認する処理を実装する ← PowerShell
②決まった時間に①を呼び出す ← タスクスケジューラ

バッチ完了メールが届いていない場合、全体周知用のメールを送るのですが
そのための下書きを自動作成する処理も含んでいます。

①のスクリプトがこちら

# タスクスケジューラで毎朝09:02:30に本スクリプトを起動する

#Outlookアプリケーションを取得
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")

#受信トレイを取得
$Inbox = $Namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)

#検索条件
$yesterday = Get-Date (Get-Date).addDays(-1) -Format "yyyyMMdd"
$subject  = "件名"+ $yesterday
$sender   = "test@test.jp"

$found = $false
$notFoundMsg = ""

#受信トレイ内の各メールの件名と宛先を確認する。
foreach ($item in $Inbox.Items){
    if($item.Subject -eq $subject -and $item.SenderEmailAddress -eq $sender){
        $found = $true
        break
    }
}

if($found){
    Write-Host "◯「$subject」"
} else {
    Write-Host "×「$subject」"
    $notFoundMsg += "×「$subject`r`n"
}
$found = $false


#メール不達の場合
if($notFoundMsg -ne ""){
    $notFoundMsg += "`r`n`r`n日次バッチ未完了メールの下書きを作成しますか?"

    # メッセージボックスを表示
    $WS = New-Object -com Wscript.Shell
    $result = $WS.Popup($notFoundMsg, 30, "確認", 4)
    
    #日次バッチ未完了メールの下書きを作成
    if($result -eq 6){
        $mail = $Outlook.CreateItem(0)
        $mail.Subject = "タイトル"
        $mail.Body  = "関係者各位`r`n`r`n`r`n"
        $mail.Body += "いつもお世話になっております。`r`n`r`n"
        $mail.Body += "◯◯部の**です。`r`n`r`n`r`n"
        $mail.Body += "あいうえおかきくけこ`r`n`r`n"
        $mail.Body += "どうぞよろしくお願いいたします。`r`n"

        $mail.save()
        $inspector = $mail.GetInspector
        $inspector.Display()
    }
}
#メールが正常に届いていた場合
else {
    $today = Get-Date -Format "M/d"

    Write-Host ""
    Write-Host ""
    Write-Host $today
    Write-Host "$subject"
    Write-Host ""
    Write-Host "確認済み。"
}


#30秒経過で画面を閉じる
Start-Sleep -Seconds 30

タスクスケジューラへの登録手順は割愛します。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?