Making daily recurring To Do items in Apple iCal
I just worked out how to use AppleScript to create recurring daily to do items in Apple iCal.
It is the one thing has always prevented my moving over to iCal. I would love to say that it is otherwise, but the fact is, I am terrible at keeping to a rhythm. No matter how firmly I seem to have a simple daily rhythm in grasp I always fall back into my old habits within a few weeks.
To combat this I need a daily checklist. However, this feature is not available in iCal. Disappointed, I looked elsewhere and disliking everything I found, I scrapped my productivity boosting plan entirely and went back to occasionally forgetting my daily list in Omni Outliner.
Yesterday a conversation with a friend pushed me to try this with Automator, which, unfortunately is not suited to the task. Luckily, I recall a long while ago hearing something about an age-old scripting language named "AppleScript".
After taking a half hour to get myself into The Way I finally managed to rustle up a small script that inserted a To Do item into iCal. To my delight it was trivial in iCal to add a recurring 6 am even, which as its alarm, would Run the Script.
Each morning a new daily To Do list item "Fill-in time sheet" is created. This works just as any To Do list item - if I have not completed it by the end of the evening, it will carry on to the following day. I suggest setting 'Hide To Do items _ days after they are complete' to one or two days.
So, without further ado, here's the script:
-- doesn't create duplicates. adds todo's to calendar "Personal"
on createTodo(summaryText)
set now to current date
set midnight to now - (time of now)
tell application "iCal"
-- don't create an item if it already exists for today!
if (count (every todo in calendar "Personal" ¬
whose due date ≥ midnight ¬
and summary = summaryText)) < 1 then
make new todo ¬
at end of calendar "Personal" ¬
with properties ¬
({due date:midnight, summary:summaryText})
end if
end tell
end createTodo
createTodo("Fill in time sheet")