适用于Google日历和Outlook for Windows的ICS事件更新

时间:2014-07-21 18:03:09

标签: calendar outlook google-calendar-api icalendar

问题:

如果我使用特定的uid和sequence = 0创建ICS文件,则将该ICS发送到Google日历或Outlook for Windows会成功创建该事件。 如果我创建另一个具有相同uid和序列1的ICS

  • 将该事件发送到Google日历会成功更新

  • 将其发送到Outlook for Windows会导致创建重复事件,并删除日历上的任一事件都会删除它们

潜在的解决方法:

以下解决方法是否适用于Google日历和Outlook for Windows?

  • 重新安排活动时,请同时附上取消ICS和 新的ICS具有不同的uid和序列0。
  • 目标是在Google日历和Outlook for Windows中删除原始事件并使用新的活动时间重新创建

示例ICS文件(当前文件,不是解决方法)

原创活动:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:GMT -4
BEGIN:STANDARD
DTSTART:16011104T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010311T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ATTENDEE;CN=test@gmail.com;RSVP=TRUE:mailto:test@gmail.com
ORGANIZER;CN="Test Scheduling":mailto:test@s-3er8nc12r9xwme7e7orvha5os.k5hihmay.k.apex.sandbox.salesforce.com
DTSTART:20140728T090000Z
DTEND:20140728T100000Z
DTSTAMP:20140718T085713Z
LOCATION:DM Scheduling will contact you at the time of your call to connect the call.
TRANSP:OPAQUE
SEQUENCE:0
UID:040000008200E00074C5B7101A82E00800a08K0000008HIxXIAW20140718T085712Z00000000000000
DESCRIPTION:This is test #5 (7/18/14)
SUMMARY;LANGUAGE=en-us:[P3006954]:3Call-Marina test/Marina Invividual Exp
PRIORITY:5
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR

重新安排:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VTIMEZONE
TZID:GMT -4
BEGIN:STANDARD
DTSTART:16011104T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYHOUR=2;BYMINUTE=0;BYMONTH=11
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010311T020000
RRULE:FREQ=YEARLY;BYDAY=2SU;BYHOUR=2;BYMINUTE=0;BYMONTH=3
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ATTENDEE;CN=test@gmail.com;RSVP=TRUE:mailto:test@gmail.com
ORGANIZER;CN="Test Scheduling":mailto:test@s-3er8nc12r9xwme7e7orvha5os.k5hihmay.k.apex.sandbox.salesforce.com
DTSTART:20140729T100000Z
DTEND:20140729T110000Z
DTSTAMP:20140718T090944Z
LOCATION:DM Scheduling will contact you at the time of your call to connect the call.
TRANSP:OPAQUE
SEQUENCE:1
UID:040000008200E00074C5B7101A82E00800a08K0000008HIxXIAW20140718T085712Z00000000000000
DESCRIPTION:This is test #5 (7/18/14)
SUMMARY;LANGUAGE=en-us:[P3006954]:3Call-Marina test/Marina Invividual Exp
PRIORITY:5
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR

1 个答案:

答案 0 :(得分:0)

Outlook可以重新安排。你必须要有一些小东西。尝试发送最简单的重新安排,只需要UID,顺序和新的时间?您的UID很长,规格没有任何限制。或许尝试一个更短的。最后,重新安排消息的结构有什么不同吗?它是否在带有mime类型的单个部分消息中 “text / calendar; method = REQUEST”?