I’m sure someone has noted this problem before and has created a script already:
Here’s the problem: you create an event or to-do item (or something else with an alarm) in iCal (or some other similar application). The alarm requires you to specify a date/time for the alarm either in an actual date/time, or in some relative description such as N days before the event, or N hours before the event, etc. What happens if your machine is not running at the time the alarm is supposed to be delivered, or you are not logged in? You don’t get the alarm!!! So, if you create an important event for, say, Friday, with an alarm on Wednesday, but don’t log on Wednesday and don’t log in until Thursday, you don’t get the alarm about the important event on Friday!!
This is a particular problem if you use a laptop and the machine might be turned off or in sleep mode at the time the alarm is supposed to be delivered because you’re in your car, or in a meeting or something.
Other event scheduling software I’ve used has ways around the problem. Most of them look when the application starts running again to see what alarms are “pending” - that is alarms that were never sent for one reason or another. iCal doesn’t appear to have this feature.
In my opinion, this is a major failing of the application!
What I’m looking for is a script, so that when I boot the machine on Thursday, and the iCal application starts, I’ll get the alarm I should have gotten on Wednesday but didn’t.
I’m sure someone has written a script to get around this problem and would be very surprised to find out this hasn’t been addressed before. If I knew more about Applescript I could probably write one, and could probably figure it out after a great deal of trial and error. But, I’m hoping for a previously written solution.
I think the script would need to:
- either run periodically, or run every time the application is started or the machine is “wakened” from sleep mode
- read the alarms of events and todo lists for events and todo items that have not passed/expired
- check to see if the alarms are “overdue” - that is, is there an alarm scheduled for this event or todo item that was scheduled to happen before now for an event that is at some future time but the alarm was never sent/actvated.
- send/activate the alarm
Thoughts or (preferably) pointers to such a script?