iCalDoit is the "missing link" between iCal on the one side and Mac OSX workflow programming (Automator, AppleScript, ...) on the other side. Use iCalDoit to expand the features of iCal.
It basically consists of a collection of automator actions and a collection of applescript handlers.
You will need basic knowledge about Apple Automator (or AppleScript) to take advatage of iCalDoit.
iCalDoit has just started. Your assistance, help, testing is welcome.
iCalDoit is published under GNU GPL version 3.
Automator actions can be used with Apple´s Automator application. They are software elements that can be combined as a workflow with specified parameters. These workflows may be saved as workflows (wow!), applications or plug-ins.
Copy the included Automator actions to: username/Library/Automator/
get iCal selection(options: calendar, date, event/todo; output mode) returns the active selected items of iCal, namely calendar, date, event and todo. For recurrences of an event, the output mode settings apply, if only the parent event (compatible) or a record, containing the properties of the selected recurrence (accurate), or both (mixed) will be returned.
get events of a calendar(options: calendar) This action finds all events of the specified calendar. If you want multiple calendars to be searched, pass them by workflow input.
get events from... to...(options: start date, end date) This action returns all events from start date to end date. You can also specify the dates and calendars to be searched with appropriate workflow input.
get uid of iCal objects(options: other information, output format) This action returns the uid (unique id) and few other properties of iCal objects as text. New: this action now supports csv output that can be saved to disk using third party actions. (I may include one later.)
make a favorite event(options: name/uid of reference event, target calendar, edit window) duplicates the reference event to the selected date in the chosen calendar. The reference event is specified by workflow input and by parameter. You can choose to open an editor window in iCal to further customize the event. If more than one event is passed to the action, it will let the user choose his favorite event to create. New: Now this action will accept csv data for input. By this you may load your favorites list from a csv-file.
move events by offset(options: time offset) This action moves the events by a specified time offset (days, hours, minutes). Negative values will schedule events sooner, positive values will schedule them later.
repeat events more or less often(options: offset of recurrences) This actions increases or decreases the number of recurrences of the events by a chosen value.
change object information(options: text fields, tasks, text input): This action changes the text information properties of iCal objects. It is possible perform mutiple operations on the same field, eg. deleting a keyword and appending text. Be aware that every chosen task will be performed, even if it is not currently visible in the selected tab view.
calculate duration of event(options: storage location, text before and after duration) This action calculates the duration of events and puts it into their titles/descriptions. Or passes the result to the next action.
total duration of events(options: hours per day, format, output destination) Totals the duration of events. You can choose the output destinations: workflow, user dialog (with copy to clipboard button), clipboard.
filter items by type(options: object classes) This action filters the objects by type. The following types can be chosen: calendar, date, todo, non-recurring event, recurring event (first instance), recurring instances of an recurring event, text and number.
Note: There is an issue with 10.6 that requires you to check "event" and "recurring event" to receive any event output. It´s fine with 10.5, though.
set iCal view options(options: main view, sidebar views, window position and size...): This action changes the view for iCal. The show/hide option for calendars is not yet available.
Have a look at the example workflows to understand the concept of automator and iCalDoit.
add selected event to favoritesMarks the selected event as a favorite. In this case, it is done by changing the value of the url property of the event to this web page.
remove selected event from favoritesClears the value of the url property of the selected event.
make a favorite eventSearches for favorite events. Then it lets the user choose to create one of them at the selected date. This workflow is very slow, because performing searches per iCal on its database is very slow. For better performance you may modify the workflow and store your favorite events in a special calendar.
Tutorials and links
These tutorials will teach you how to use Automator. They are not affiliated with and do not refer to this project.
icalBuddy is a command line tool by Ali Rantakari; it is extremely helpful in getting recurrences of events. Installation of Version 1.7.9 or higher is recommended.
third party automator actions
Source code is provided as a collection of AppleScript handlers and as Xcode projects. While the AppleScript handlers are included in the program bundle, you will need to follow the links to sourceforge downloads to get the Xcode projects.
|web page of iCalDoit|