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

Changed Recurring Instance leads to duplicate entry #375

Closed kaisermario closed 11 months ago

kaisermario commented 11 months ago

The problem

I have an appointment series (see attached ics string) where one instance was changed from 12.10.23 11:30 start time --> 12.10.23 10:30 start time

Now I have two entries for this day: appointment 12.10.23 10:30-11:00 appointment 12.10.23 11:30-12:00

Is this a bug?

Version of GAS-ICS-Sync

5.7

Additional information & file uploads

BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
X-WR-CALNAME:Kalender
BEGIN:VTIMEZONE
TZID:W. Europe Standard Time
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:UTC
BEGIN:STANDARD
DTSTART:16010101T000000
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T000000
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:FLE Standard Time
BEGIN:STANDARD
DTSTART:16010101T040000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
RRULE:FREQ=WEEKLY;UNTIL=20240926T093000Z;INTERVAL=2;BYDAY=TH;WKST=MO
EXDATE;TZID=Central Europe Standard Time:20230525T113000,20230706T113000,20
 230720T113000,20230817T113000,20230914T113000,20230928T113000
UID:040000008200E00074C5B7101A82E00800000000CFE1BE1591E1D801000000000000000
 0100000008C0398C2A6CA6B4D8C7809797E707149
SUMMARY:1:1 Mario/Andreas
DTSTART;TZID=Central Europe Standard Time:20221027T113000
DTEND;TZID=Central Europe Standard Time:20221027T120000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20231007T214756Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:18
LOCATION:Teams oder Büro lan
X-MICROSOFT-CDO-APPT-SEQUENCE:18
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:1
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
END:VEVENT
BEGIN:VEVENT
UID:040000008200E00074C5B7101A82E00800000000CFE1BE1591E1D801000000000000000
 0100000008C0398C2A6CA6B4D8C7809797E707149
RECURRENCE-ID;TZID=Central Europe Standard Time:20231012T113000
SUMMARY:1:1 Mario/Andreas
DTSTART;TZID=Central Europe Standard Time:20231012T103000
DTEND;TZID=Central Europe Standard Time:20231012T110000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20231007T214756Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:25
LOCATION:Teams oder Büro lan
X-MICROSOFT-CDO-APPT-SEQUENCE:25
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-REQUESTEDATTENDANCEMODE:DEFAULT
END:VEVENT
END:VCALENDAR
jonas0b1011001 commented 11 months ago

Yes that's a bug, due to a non working timezone conversion the script is selecting the wrong instance to update. Besides a duplicate on the 12th, you should find the instance on the 26th missing.

373 is the fix.

kaisermario commented 11 months ago

@jonas0b1011001 Thank you very much for your quick feedback. That fixed my issue - thanks a lot!