「Mac でしかできないこと」ってなんだろう・・・で単純に思い付くのは、“AppleScript”です。対応ソフトは限られますが、対応しているソフトであれば、同じ書式でいろんな作業の自動化ができます。
今回は、そんな自動化をいろいろ紹介してみたいと思います。
iCal でタイムカード?
iCal も当然、AppleScript 対応です。なんせ、スケジュールをメール送信したりするしくみは、iCal のパッケージに含まれるAppleScriptにより動作しています。
今回は、AppleScript でのスケジュールの作成と言う意味で、「タイムカード」を作ってみました。まずは、“iCal” と “スクリプトエディタ”(/Applications/AppleScript 以下) を起動して準備オッケーです。
※この記事は、Mac OS X 10.2.5 と iCal 1.0.2 で動作確認しています。
スケジュール作成の基本形
まずは、ベースとなるスクリプトを考えてみましょう。以下のスクリプトがスケジュール作成の基本形になります。試しに書き込んで実行してみて下さい。
set startDate to date "2003年 4月 14日 月曜日 0:00:00 PM"
copy startDate to endDate
set time of endDate to ((time of endDate ) + 5)
tell application "iCal"
make event at end of events of calendar 1 with properties {sequence :0, summary :sum1 , start date :startDate , end date :endDate }
end tell
目的に応じた時間とか見出しにあわせて自由にスケジュールを登録するには、まず、このスクリプトを汎用的にします。 sum1 と startDate だけ目的に応じて変更すればよいわけですので、以下のような呼び出しのセットとして変更します。このように、on xx ~ end xx とすれば、処理の固まりを一つの命令として作成できます。
copy startDate to endDate
set time of endDate to ((time of endDate ) + 5)
tell application "iCal"
make event at end of events of calendar 1 with properties {sequence :0, summary :sum1 , start date :startDate , end date :endDate }
end tell
end makeEvent
起動時と終了時にスケジュールを登録
あとは、上記の呼び出しを起動時と終了時に必要な情報とあわせて呼び出すだけで完成!。起動時には、on run ~ end run が処理され、終了時には、on quit ~ end quit の処理が自動的に行われますので、それらの中身に、スケジュールを作成する処理を書き込めばよいのです。下記の例にある current date はそのときの現在の時間と日付けを所得しています、continue quit は終了処理を継続するための約束ごとです。
set startDate to current date
set sum1 to "開始"
makeEvent (sum1 , startDate ) of me
end run
on quit
set startDate to current date
set sum1 to "終了"
makeEvent (sum1 , startDate ) of me
continue quit
end quit
on makeEvent (sum1 , startDate )
copy startDate to endDate
set time of endDate to ((time of endDate ) + 5)
tell application "iCal"
make event at end of events of calendar 1 with properties {sequence :0, summary :sum1 , start date :startDate , end date :endDate }
end tell
end makeEvent