derekantrican / GAS-ICS-Sync

A Google Apps Script for syncing ICS/ICAL files faster than the current Google Calendar speed
GNU General Public License v3.0
1.5k stars 192 forks source link

Change tentative MS365 events to sync as free #384

Open aokellermann opened 9 months ago

aokellermann commented 9 months ago

MS 365 has a concept of tentative: X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE.

GCal does not really have a concept of tentative. It uses TRANSP:TRANSPARENT to indicate that calendar space is "Free" and TRANSP:OPAQUE to indicate that calendar space is "Busy" (there is actually a "yes"/"no"/"maybe" option but it is only for shared events: ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;CN=First Last;X-NUM-GUESTS=0:mailto:example@gmail.com). STATUS:TENTATIVE events in GCal are shown as "Busy".

Tentative MS events are TRANSP:OPAQUE, so in order to make them not take up calendar space in GCal, they need to be set to TRANSP:TRANSPARENT.

IMO it is pretty reasonable for this change to be not configurable by the user because it helps achieve parity between GCal + MS, but I can add in a configuration variable if desired.

CeesGniewyk commented 5 months ago

Thanks for adding this, I realized that there's no option to filter for only accepted invites.

event.hasProperty('status')) is always confirmed, so your 'x-microsoft-cdo-busystatus' is actually a better property to filter for accepted invites. Thanks for sharing!