古いマックを修理して(ハードディスクの交換)24節気カレンダーにすることは成功したのですが、
再起動の時間になっても、再起動しません。
どうやらプレビューアプリが再起動の邪魔をしているようです。
そこで、①時間ごとに現在の時間を求めて(時間だけ。分と秒を求めると面倒なので)
午後⑪時になったら、プレビューを終了させるようにしてみました。
午前零時(午後⑫時)にしても良いのですが、できれば⑫時に全部のパソコンを再起動したいのと、
時計じゃありませんから、23時と24時の間①時間表示がなくとも困りませんのと、
(current dateの)現在時間を詳しく調べて比較するとコードが長くなって面倒なので、
現在の時間だけを求めるようにしました。
それをアイドルさせて①時間ごとにチェックするというものです。
time_1とtime_2が同じになったら、、、ではエラーになりましたので、単純に差がゼロということと、
アップルスクリプトには分(ふん、minute)という考えがありませんからアイドル時間は秒で指定しますが、
掛け算でもオーケーらしいので秒数を60*59と書きました。
60*60でないのは、何かの偶然で少しだけ動作がずれると、①時間をまたいでしまうのではないかと、
おもったからです。
on idle set time_1 to (hours of (current date) as string) set time_2 to 23 if (time_1 - time_2 = 0) then tell application "Preview" quit end tell end if return 60 * 59 end idle
──────────後日談
自分が書いているコードは、エラー処理をしていませんので、予想外の事態になると、
止まってしまいますので実際に動くかどうかは試してみないとわかりませんので
少し不安でしたが、リアルタイムで監視していると、動きましたのでホッとすると同時に
自分の書いたコードですので嬉しいものです。
return 60 * 59としているわけですから、ちょうどの時間より少しずつずれていきます。
何時ちょうどで動作するわけではありませんから監視時にはちょっとこまりました。
アップルスクリプトは簡易言語といってもプログラム言語だとおもいますし、
MacOSのバージョンによって動いたり動かなかったりと色々な癖があるものだなと思います。
また、あんまり細かく設定してもエラーになったりしますので、必要最低限の短いコードの方が
あとでのバグ取りにも楽です。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー