2009年8月30日日曜日

ここが非互換 Mac OS X 10.6 -- iCal

Mac OS X 10.6 Snow leopard が発売になりました。

当サイトでは、よく iCal 関係の AppleScript を扱っていますが、Mac OS X 10.6 では、少し挙動が変わりました。試しに、iCal でカレンダー「テスト」に「テスト」というイベントを作って、AppleScript から観察してみます。

tell application "iCal"
  tell calendar "テスト"
    properties of event 1
  end tell
end tell

以下は 10.5.8 (iCal 3.0.8) の結果です。

{
  allday event:false,
  class:event,
  description:missing value,
  end date:date "2009年 9月 2日 水曜日 1:00:00 PM",
  excluded dates:{},
  id:"C0DC5F01-4183-412E-95AB-9414FD8111C6",
  location:missing value,
  recurrence:"",
  sequence:2,
  stamp date:date "2009年 8月 30日 日曜日 2:27:03 PM"
  start date:date "2009年 9月 2日 水曜日 10:00:00 AM",
  status:none,
  summary:"テスト",
  url:missing value,
}

以下は 10.6 (iCal 4.0) の結果です。

{
  allday event:false,
  class:event,
  description:missing value,
  end date:date "2009年9月2日水曜日 16:00:00",
  excluded dates:{},
  id:"6A5888C1-D872-4C5F-B053-09CD8FC5067D"
  location:missing value,
  recurrence:missing value,
  sequence:2,
  stamp date:date "2009年8月30日日曜日 14:20:48",
  start date:date "2009年9月2日水曜日 13:00:00",
  status:none,
  summary:"テスト",
  url:missing value,
}

プロパティリストの結果は、比較しやすいように辞書順に並べ替えています。以上のように、recurrence に値が設定されていない時の結果が違います。description に "" (空文字列) を設定した時の挙動も違い、iCal 3.0.8 では "" になりますが、iCal 4.0 では missing value になります。

なお、missing value を文字列に変換して扱ってはいけません。AppleScript では missing value as string は "missing value" という文字列になるというよく分からない仕様なので、気をつけましょう。

0 件のコメント:

コメントを投稿