深夜ラジオが聴きたくてほぼ毎日Macでラジオを録音してまして、
それをiTunesに登録して楽しんでいますが、
iTunesに追加するときに番組によって追加するプレイリストを変えたり、
アルバム名やアーティスト名の変更・再生位置記憶・シャッフル時スキップ等の設定したり、
録音した順番に確実に追加するため、
それらの作業をしてくれるApplescriptを組んでアプリケーションにして実行しています。
そこまで自動で出来るようにしたのに、そのスクリプトを実行するのが手動では何だか少し残念ですので、
Macで定期的にアプリケーションを実行する方法がないか調べてみたところ、
「カレンダー.app」を使って自動的にアプリケーションを実行できそうという事が分かりましたが、
実際にスケジュール通りに実行できるまでが思っていたより手こずりましたのでその方法をご紹介。
まず、失敗例から
何の準備もせず、スケジュールを追加したい日で副クリックしてコンテキストメニューから「新規イベント」
イベント名を入れて開始時刻等を設定
「通知」の項目から「カスタム」
「メッセージ」の部分を「ファイルを開く」に変更
その下に表示される「カレンダー」の部分を「その他...」に変更
実行させたいアプリケーションを選択します。
実行のタイミングを設定
「OK」ボタンを押します。
カレンダーにイベントが登録されました。
本来であればこれでスケジュール通りに実行してくれるはず。
あ、繰り返しの設定もしておかないと…
と思い、イベントをダブルクリック。
先ほどの設定が消えてます…
何度設定し直しても、時間帯や実行するアプリケーションを変更してみても消えました。
原因はiCloudの同期のようでアプリケーションを実行する方法自体は間違っていないのですが、
iCoudで同期している他の端末には指定したアプリケーションがなく、
このスケジュールを実行できないため消えてしまうようです。
ウインドウ上部の「カレンダー」ボタンを押してカレンダー一覧を見てみましょう。
「iCloud」のカレンダーと「その他」のカレンダーしかありません。
となると新しくこのMacのみで実行できるのカレンダーを用意する必要があるんですが、
メニューのどこ探してもその項目が見つかりません。
何かあるはずと思い、色々操作しているうちに「このMac内」を追加することが出来ました。
先ほどのイベントは削除しておきます。
カレンダー一覧に「その他」がない場合は環境設定>一般で「その他」が出るようにしておきましょう。
「その他」のカレンダーどれかを選択
カレンダー一覧の空白部分で副クリックしてコンテキストメニューから「新規カレンダー」を選択
「このMac内」が出現します。
名前を付けてそのカレンダーを選択してから
イベントを追加
イベントの追加作業は上で書いたのと同じです。
イベントをダブルクリックして確認。
ちゃんと設定が残ってます。
繰り返しを「毎日」にして適用。
毎日ラジオ登録!
さすがにこれは見た目が…
という事でカレンダーのチェックを外してMac専用のイベントを非表示にしちゃいましょう。
これでカレンダー.appを起動していなくても毎日決まった時間になったら指定したアプリケーションを実行して通知してくれます。
以前コンピュータのスリープで懲りまして「しない」にしてますので、
スリープ状態でも実行してくれるかどうかは確認してません。
(ディスプレイはスリープ設定してます。)
2016.11.30追記
※Sierra以降ではシステム環境設定>通知>おやすみモードで「ディスプレイがスリープ中は入にする」のチェックを外さないとディスプレイをスリープ設定している場合はチェックを外します。(下記参照)
通知ありきの機能ですのでカレンダーの情報から「通知を無視」にチェックを入れてしまうと
設定したアプリケーションが実行されませんので注意しましょう。
※以下、Sierraにアップグレードしてうまく動作しなくなった後、再び動作するようになった経緯となります。
2016.10.28追記
macOS Sierraにしたところうまく動かなくなりましたが
環境設定の「通知」でアカウントを「このMac内」に変更してみたらイベントの部分が「なし」になっていました。
「イベントの開始時刻」に変更したところ再び動くようになりました。
※2016年11月11日追記
やはり動かない状況が出てきました。
どうやらディスプレイがスリープしている場合通知されないようです。
開始時間〜終了時間の間にスリープ解除できれば実行されるようですのでとりあえず終了時間を延長して対処することにします。
※2016年11月30日追記
どうやらSierra以降では
ディスプレイがスリープ中に実行タイミングとなった場合
システム環境設定>通知>おやすみモード
の「ディスプレイがスリープ中は入にする」のチェックを外さないと実行されなくなったようです。
(El Capitan まではチェックされていても実行されていました。)