毎朝、メールより先にチェックするための注意喚起を自動化する仕組み(記事)を構築した筆者であったが、現在のところ非常にうまく稼働している。

まとめると、以下のようなタスク処理を定時に自動で行ってくれる。


1.朝一にメールより前に確認しておくべきことをデスクトップに表示
2.SaaS利用を目的に設定したURLへブラウザで自動移動
3.その日の作業フォルダを西暦日付名で自動作成

こうしてみると、ひとつの改善点は1.の表示部分だ。なぜなら、朝一にメールより前に確認すべきことは、随時変わってくる。どうすれば手軽に編集できうだろうか?CGIで掲示板を作ったことのある人なら、ここはテキスト読み込みだとすぐに思うだろう。筆者も学生時代に大量の掲示板を設置するサイトを作成・運営していた経験があるので、直ぐに閃いた。
○テキストを読み込ませる仕様に変える

現状の「朝一起動のPowerShellスクリプト」は以下のようなものだ。

Add-Type -AssemblyName System.Windows.Forms

$msg = @"
9時です。メールを開く前にやること

・その日の提出物確認
・スマホやモバイル端末の充電状況確認
・無駄なメールは後回し

※メールを先に開くと負けです

"@

$result = [System.Windows.Forms.MessageBox]::Show(
$msg,
"朝通知",
[System.Windows.Forms.MessageBoxButtons]::OKCancel,
[System.Windows.Forms.MessageBoxIcon]::Warning
)

if ($result -eq "OK") {
Start-Process "https://news.mynavi.jp"
}

$msg に入れているヒアドキュメント @"~"@の部分をまるまるテキストから読み込ませるには、ファイル読み込みのGet-Content(Microsoft公式API)を用いる。

$msg = Get-Content "C:\Users\●●●\Documents\morning.txt" -Raw

とテキストファイルを指定する。 -Rawは改行もそのままメッセージとして保持するためのオプションで今回は必須だ。Get-Contentでテキストで保存したファイルから読み込むtestMorning.ps1は以下のようになる。

Add-Type -AssemblyName System.Windows.Forms

$msg = Get-Content "C:\Users\●●●\Documents\morning.txt" -Raw

$result = [System.Windows.Forms.MessageBox]::Show(
$msg,
"朝通知",
[System.Windows.Forms.MessageBoxButtons]::OKCancel,
[System.Windows.Forms.MessageBoxIcon]::Warning
)

if ($result -eq "OK") {
Start-Process "https://news.mynavi.jp"
mkdir "$env:USERPROFILE\Desktop\$(Get-Date -Format 'yyyyMMdd')"
}

Read-Host "Press Enter to close"

これを実行すると

ドキッとするが、見慣れた文字化けなので安心である。テキストをutf-8保存して再度実行すると

無事にテキストファイルを読み込んで表示される。

.
編集部おすすめ