機能がアップしているからかどうか分からないのだけど、次のような参照の書き方が利用できます。これって、今までも出来ていました?
on run
tell application "iCal"
activate
set theDate to current date
set todoList to {}
repeat with thisCalendarTodos in todos of calendars -- 1
set propList to properties of thisCalendarTodos -- 2
if propList is not {} then
repeat with thisItem in propList
set dueDate to due date of thisItem
if dueDate is greater than theDate then
set num to dueDate - theDate
set finalDays to num div days
set theText to "残りの日数:" & finalDays & " 日" & return
display dialog theText buttons {"OK"} default button 1 giving up after 15 with title (summary of thisItem as string) with icon 1
end if
end repeat
end if
end repeat
end tell
end run
このスクリプトは、iCal の全 ToDo の期限を調べるスクリプトです。これ自体は、何の変哲もないのですが...、スクリプトで、2 とコメントしている部分が以前から出来ていたのかどうかが気になるのです。
repeat - in - の部分で全カレンダーの全 ToDo を取得しています。これは、全カレンダーの全 ToDo の参照になります。この参照から中身を取り出すには、contents of - とします。ここまでは、いいのです。その次の参照に対して properties としている部分です。これで、カレンダーの全 ToDo の全ての属性が取得できます
理屈としては理解できます。ただ、こういった記述が以前は出来なかったような気がするのです(出来たのかもしれませんが...)。こういう記述が使えるなら、繰り返しが極力短く記述できます。また、参照に対して処理を行うので処理速度的にも問題なしです。
AppleScript には、まだまだ知られざるアプローチが多々ありそうです。