機能アップ

機能がアップしているからかどうか分からないのだけど、次のような参照の書き方が利用できます。これって、今までも出来ていました?

Script Editor で開く

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 には、まだまだ知られざるアプローチが多々ありそうです。

0 件のコメント :

コメントを投稿