Tags:

iCal Repeat Todos
October 2, 2007 9:00 AM   Subscribe

How do I set iCal todo items to repeat on a regular interval? That way if I check off to mow the lawn, it will auto-create a new todo item for next week so I see it on my schedule. My Palm pilot used to do this. Is there an AppleScript?
posted by honorguy7 to Computers & Internet (8 answers total) 4 users marked this as a favorite
 
Click on an event. View Menu> Info.

There's a 'repeat' choice. Adjust to your liking. Or am I missing something?
posted by filmgeek at 10:48 AM on October 2, 2007


He's asking about a to-do, not an event. They are different.
posted by clh at 10:53 AM on October 2, 2007


This is the closest I could get with Applescript. As far as I can tell, there's no to trigger it by the action of marking a todo as completed, so you'll have to run the script manually.

The script checks if a todo called "mow lawn" is marked as complete and then creates another task 7 days out from the date it was marked as completed. In this example, I have the "mow lawn" todo in a calendar called "Chores". Adjust the property as necessary to reflect your setup.
property todoCalendar: "Chores"

tell application "iCal"
  tell calendar todoCalendar
    set theTodo to last todo whose summary contains "mow lawn"
    set doneDate to (completion date) of theTodo
    try
      set newDueDate to doneDate + 7 * days
      make new todo at end with properties {description:"mow lawn", summary:"mow lawn", due date:newDueDate}
    on error
      display dialog "The last mow lawn task has not been completed."
    end try
  end tell
end tell

posted by pmbuko at 10:54 AM on October 2, 2007


iCal's to do module is pretty weak. Lack of repeating items there led me (and many others) to switch to RTM.
posted by olecranon at 12:05 PM on October 2, 2007 [1 favorite]


The trick is to set up a recurring event that has an Applescript as an alarm. Here's what I do:

1. Setup a new calendar called "Scripts" (I do this so I can just hide the calendar and not have to see dozens of events that simply trigger a to-do.)

2. Create the Applescript for my to-do and save it somewhere (I have a scripts folder in my documents folder):
--Time Warner Cable bills
--Run on the 23rd of each month
tell application "iCal"
	
	set theDay to 14 --day the bill is due
	set theSummary to "Pay Time Warner Bill" --summary of todo
	set theURL to "https://payxpress.timewarnercable.com/" --url (if any)
	set thePriority to 5 -- medium priority
	
	set today to current date
	set theMonth to (month of today as number) + 1
	if (theMonth > 12) then
		set theMonth to 1
		set theYear to (year of today as number) + 1
	else
		set theYear to year of today as number
	end if
	set dueDate to today
	set month of dueDate to theMonth
	set day of dueDate to theDay
	set year of dueDate to theYear
	make new todo at the end of todos of calendar "Bills" with properties {summary:theSummary, due date:dueDate, priority:thePriority, url:theURL}
end tell
3. Set up recurring event to trigger script to repeat every month, with Alarm:Run Script, (Choose script), the same day, at 8am.

It's not particularly simple, but it works. You may have to change a few calculations on the date depending on when you want the script to run. For example, if you run your script on the 1st and your to-do is due on the 15th, you can take of the "+ 1" for theMonth.

Hope this helps.
posted by conigs at 7:25 PM on October 2, 2007


If you have OmniOutliner, you could setup kGTD and use it to drive iCal updates. It's relatively easy to setup kGTD and it can handle your lawn-mowing reminders with ease. The author of kGTD is working with the OmniGroup on OmniFocous, a standalone GTD client.

Also, just checked, iCal's to-dos don't have any sort of repeat functionality in MacOS X 10.5.
posted by nathan_teske at 9:21 PM on October 2, 2007


check out http://web.mac.com/lypanov/iWeb/Web/Diary/9950DF91-726E-42B2-A639-1967D1DE7545.html
posted by zinf at 3:11 AM on October 3, 2007


iGTD (which I have eschewed for OmniFocus) will do this and it's free.
posted by filmgeek at 5:12 AM on October 3, 2007


« Older Diagnose this muscle condition...   |  Really fun creative writing ex... Newer »
This thread is closed to new comments.