For reasons, I would like to use a local “On My Mac” calendar to do time blocking.
The obvious trouble, then, is that I can’t see those time blocks when not on my Mac.
So I’d like to sync this local calendar with an IMAP or iCloud calendar. Does anyone know of any tools that can do this? I’m happy even if it’s only a one-way read-only sync.
Uhhmmm………… Make it an iCloud calendar? I’m not understanding this. Are you programmatically generating the source calendar? iCloud calendars can subscribe to a calendar feed, maybe that’s more like what you are looking for?
At one time BusyCal offered peer to peer calendar sharing on a local lan but a change to macOS killed that. If you are wanting to sync calendars on your local lan you could install a CalDAV server on your Mac and share calendars locally but AFAIK you cannot sync the “On My Mac” calendar.
If you don’t want to run a local CalDAV server you could set up a free Gmail account and let all your devices log in as the same user.
I am using a new macOS app I found that can trigger Shortcuts based on calendar events. It’s Rules. I will write a review on here eventually, but I love it:
The trouble is that it only reads data from Calendar.app, and I use Fantastical for calendaring.
Sure, I can use a Timeblocking calendar on an IMAP account and both Fantastical and Calendar.app can see that calendar, and I can see that calendar on iPhone/iPad too.
Unfortunately, there’s a problem with that: when using an IMAP calendar, if I make a change in Fantastical, Fantastical needs to upload the change and Calendar.app needs to download the change before the data is correct across both apps.
This can sometimes take many minutes, leading to confusion when the two apps are showing different event data.
Meanwhile, “On My Mac” calendars are updated instantly across both apps.
So I am hoping to use the On My Mac calendar for making changes and to mirror that calendar with IMAP-based one for viewing when away from my desk.
As I recall Fantastical reads your “on my Mac” calendar data. It does not sync with it.
AFAIK that is not possible. Apple says: “On My Mac refers to items that are created and stored on your local computer—they aren’t stored in iCloud or another cloud service. You can access these items on your computer’s internal disk drive.”
IMO your only choice is to use a WebDAV/CalDAV (1) server to accomplish this. “Rules ‘Shortcuts’ connects to the Apple Calendar app. So as long as your calendar is synced with the Apple Calendar app it will work.”
So connect Fantastical & Apple Calendar to the same server. To speed things along change the refresh rate of your Fantastical/Apple calendars. (Apple’s default is 15 minutes). Then, if that isn’t fast enough, I would use a non-iCloud provider.
Thanks (and thanks for the technical corrections).
That confirms my concerns. It looks like the fastest refresh rate I can get on a CalDAV account is every 1 minute from Calendar.app and every 5 minutes on Fantastical.
Which, while not much, has still caused confusion on multiple occasions.
Perhaps I can finagle some kind of scripting solution to replicate events between an On My Mac calendar and a CalDAV calendar…
The only way I know to get events from your On My Mac calendar is to export all the data, or to manually copy and paste events from one calendar to another. Good luck.
You could run two calendars on your iPhone and use your Apple calendar for this instead of Fantastical.
I made a quick script to replicate an event from one calendar onto another — that was easy. But building out something more robust for constant replication probably wouldn’t be worth the effort, considering the need to prevent double-duplication. I’d have to build in some way to check that an event already had been replicated, which could take quite a bit of processing time (depending on how many future events there were), and the script would need to run often when engaged in planning.
Indeed, Calendar.app appears to support push refresh for iCloud calendars. Curiously, Fantastical only supports push refreshing for Exchange/Office 365 and Gmail, not iCloud.
I think the simplest solution here is for me to relax about my Fantastical data being slightly out of sync for five minutes at a time.