前回の記事で紹介した音声読み上げの仕組みをVBScriptに移植して、タスクに登録することで一定時間ごとに音声で休憩を促してくれる仕組みを作った。Windows 8.1以降で動作すると思われる。7は多分、音声合成エンジンが標準で入っていないのでダメ。
今回は英語メッセージを読み上げるサンプルを紹介する。これは単に自己満足なので日本語が良い方は前回記事を参考にボイスを切り替えると良い。
■前回の記事
thom.hateblo.jp
VBSの準備
以下のようなコードを準備して、適当な場所にSpeakMessage.vbsとして保存する。
保存場所はバッチ用なので普段触らない場所が良いと思う。私の場合はCドライブ直下にTaskというフォルダを作ってその中に入れた。
Call SpeakMessage Sub SpeakMessage() With CreateObject("SAPI.SpVoice") Set .Voice = .GetVoices().Item(1) .Speak "Hey Thom! It's time to take a break. Stop using computer and take a rest while 5 minutes." End With End Sub
フランクでフレンドリーな感じにしたかったのだけれど、英語として合ってるのかは自信ない。
Googleさんに和訳してもらうとこんな感じ。
タスクの登録
まず、タスクスケジューラを起動する。
Windows 10の場合、1)スタート→2)Windows 管理ツール→3)タスクスケジューラと辿る。
起動したら操作メニューからタスクの作成を実行。
全般タブでは任意の名前を設定する。今回はInformBreakTimeとした。
トリガータブでは新規ボタンをクリックし、出てきたウインドウで次の赤枠のとおり設定する。
青枠の箇所は任意。1時間に1回なら、キリの良い時間に開始設定しておくと良い。
操作タブでは新規ボタンをクリックし、出てきたウインドウで操作がプログラムの開始になっていることを確認し、参照ボタンをクリックする。
先ほど作成したSpeakMessage.vbsを選択し、次の良いにセットされたらOKで閉じる。
これで設定は完了したのでタスクの作成ウインドウもOKで閉じる。
タスクスケジューラライブラリに表示されたらタスクスケジューラを閉じて作業完了。
ちなみにタスクスケジューラライブラリから目的のタスクを右クリックすることで手動実行したり無効にしたり、削除したりできる。
手動で実行すると音声が終わってもタスクが終了しなかったので、右クリックして終了させる。
その際に次のようなメッセージが出るが、OKで良い。
これで1時間ごとに自動で休憩を促してくれるようになる。
なお、自動実行の場合は実行が終わると状態が準備完了に戻る。
おわりに
5分経過した後に「作業にもどってOK」の旨を通知するスクリプトを書いても良いなと思った。
やり方としては、ひとつのVBSの中で5分Waitさせても良いし、2つスクリプトを作ってタスクをもう一つ登録するのも良い。
あるいはスクリプトに引数を持たせて1つのスクリプト、2つのタスクで引数によってメッセージを切り替えるという手もある。
モニターの見過ぎや、座りっぱなしは健康に悪い。適宜休憩をとろう。
追記
後から気付いたけど、これ5分休憩よりも「5分間、部屋の掃除をしなさい」という指示に変えたほうが良さげ。
体力仕事の休憩は文字通り体を休めることだけれど、コンピューター作業の休憩は逆に体を動かすことなので。
綺麗な部屋と健康を得られるので一石二鳥。