Mac OSの使い方/Mac OS 関連情報

Mac でしかできないことシリーズ iCal をタイムカードに!

AppleScript でのスケジュールの作成と言う意味で、iCal を利用した「タイムカード」を作ってみました。

木下 幹司

執筆者:木下 幹司

Macガイド

 「Mac でしかできないこと」ってなんだろう・・・で単純に思い付くのは、“AppleScript”です。対応ソフトは限られますが、対応しているソフトであれば、同じ書式でいろんな作業の自動化ができます。
 今回は、そんな自動化をいろいろ紹介してみたいと思います。

iCal でタイムカード?

 iCal も当然、AppleScript 対応です。なんせ、スケジュールをメール送信したりするしくみは、iCal のパッケージに含まれるAppleScriptにより動作しています。
 今回は、AppleScript でのスケジュールの作成と言う意味で、「タイムカード」を作ってみました。まずは、“iCal” と “スクリプトエディタ”(/Applications/AppleScript 以下) を起動して準備オッケーです。
※この記事は、Mac OS X 10.2.5 と iCal 1.0.2 で動作確認しています。

スケジュール作成の基本形

 まずは、ベースとなるスクリプトを考えてみましょう。以下のスクリプトがスケジュール作成の基本形になります。試しに書き込んで実行してみて下さい。
set sum1 to "スケジュールの見出し"
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 とすれば、処理の固まりを一つの命令として作成できます。
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


起動時と終了時にスケジュールを登録

 あとは、上記の呼び出しを起動時と終了時に必要な情報とあわせて呼び出すだけで完成!。起動時には、on run ~ end run が処理され、終了時には、on quit ~ end quit の処理が自動的に行われますので、それらの中身に、スケジュールを作成する処理を書き込めばよいのです。下記の例にある current date はそのときの現在の時間と日付けを所得しています、continue quit は終了処理を継続するための約束ごとです。
on run
   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


  • 1
  • 2
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます