Last active
August 29, 2015 14:02
-
-
Save kgoggin/c7e31dd9e31e7e57ac53 to your computer and use it in GitHub Desktop.
One-way sync two calendars within OS X Calendar app. In this case, used to move events from an Exchange account to an iCloud account.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
property today : current date | |
property bfCal : "*NAME OF SOURCE CALENDAR*" | |
property iCal : "*NAME OF DESTINATION CALENDAR*" | |
-- used for Growl notification | |
property allNotifications : {} | |
tell application "Calendar" to launch | |
tell application "Calendar" to reload calendars | |
-- wait for reload to happen | |
delay 30 | |
tell application "Calendar" | |
set iEvents to events of calendar iCal | |
set bfEvents to events of calendar bfCal | |
-- delete existing events in source calendar | |
repeat with calEvent in iEvents | |
delete calEvent | |
end repeat | |
repeat with calEvent in bfEvents | |
-- copy over all recurring events | |
if recurrence of calEvent is not missing value then | |
copy calEvent to end of events of calendar iCal | |
-- otherwise, only copy events occuring today or in the future | |
else if start date of calEvent ≥ today then | |
copy calEvent to end of events of calendar iCal | |
end if | |
end repeat | |
end tell | |
-- trigger Growl notification | |
growl("CalSync", "Calendars have been syncd") | |
on growl(theTitle, theContent) | |
if allNotifications does not contain theTitle then | |
set allNotifications to allNotifications & theTitle | |
end if | |
set myName to path to me as text | |
set TID to text item delimiters | |
set text item delimiters to ":" | |
set myName to the last text item of myName | |
set text item delimiters to TID | |
tell application id "com.Growl.GrowlHelperApp" | |
register as application myName ¬ | |
all notifications allNotifications ¬ | |
default notifications allNotifications ¬ | |
icon of application "Calendar" | |
notify with name theTitle ¬ | |
title theTitle ¬ | |
description theContent ¬ | |
application name myName | |
end tell | |
end growl |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment