To do this with Applescript is not as easy as it should be. Here is a script originally posted by Austin Kinsella1 a few years ago (see Re: iCal Alarm - Pass Event data to AppleScript? ). I cannot check if it works on the current iCal, but I believe it will. I would modify it to only look in the calendar I know the events will be in.
called from iCal as on alarm, will speak the title of the alarm event
won't work for repeating events
AK ITCarlow Nov 2004
set Now to current date
-- Adjust FuzzSeconds to suit; if too big, close events will speak several times
set FuzzSeconds to 15
tell application "iCal"
set MyEvents to every event of every calendar where ((start date of it) ≥ (current date))
repeat with ThisEvent in MyEvents --scan the list looking for events that have triggered us
set MinutesBefore to (trigger interval of open file alarm of ThisEvent) as number
set TriggerInt to (Now - ((start date of ThisEvent) + 60 * MinutesBefore)) --notionally 0 for firing event
if (TriggerInt < FuzzSeconds) and (TriggerInt > (-FuzzSeconds)) then
say (summary of ThisEvent as text) & " at " & (start date of ThisEvent as text)
-- ThisEvent should a reference to the event,
-- so you should be able to get the start date from it.
-- You may want to do some checking first.