如何更新ICS日历会议?

时间:2016-09-23 13:50:37

标签: calendar google-calendar-api icalendar

我正在尝试生成.ics文件,我想将其作为附件发送给客户。出于某种原因,如果重新安排会议,则不会在Google日历中或在Mac OS上的日历应用中更新会议。

以下是与SEQUENCE会面的会议:1:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//example.com//Appointment v1.0//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:citfslfcd0001hx61sjcqqp4q
SEQUENCE:1
DTSTAMP:20160923T151743
DTSTART:20160923T211500
ATTENDEE:;CN="user1";RSVP=FALSE:mailto:user1@example.com
ATTENDEE:;CN="user2";RSVP=FALSE:mailto:user2@example.com
LOCATION:Sweden
DESCRIPTION:Meeting
SUMMARY:Meeting
CLASS:CONFIDENTIAL
CATEGORIES:BUSINESS
END:VEVENT
END:VCALENDAR

这里更新了SEQUENCE:2和DTSTART的会议,一天后:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//example.com//Appointment v1.0//EN
METHOD:REQUEST
BEGIN:VEVENT
UID:citfslfcd0001hx61sjcqqp4q
SEQUENCE:2
DTSTAMP:20160923T161267
DTSTART:20160924T211500
ATTENDEE:;CN="user1";RSVP=FALSE:mailto:user1@example.com
ATTENDEE:;CN="user2";RSVP=FALSE:mailto:user2@example.com
LOCATION:Sweden
DESCRIPTION:Meeting
SUMMARY:Meeting
CLASS:CONFIDENTIAL
CATEGORIES:BUSINESS
END:VEVENT
END:VCALENDAR
  1. 当我在Google日历中打开第一个文件(来自电子邮件附件)或Mac会议中的日历应用时,会按预期添加到日历中。

  2. 当我在Google日历中打开第二个文件时,会创建具有新会议日期的重复会议。

  3. 当我在日历应用程序中打开第二个文件时...没有任何反应 - 第一次会议只是在日期单元格中“跳出”,但没有任何反应......

  4. 这些ics文件可能出现什么问题?

    尽管gmail识别它(.ics附件),我也无法取消会议,并显示消息“此会议已被取消”。

    以下是我尝试更新活动时会发生什么情况的屏幕截图:

    enter image description here

    这里有gmail在我尝试取消会议时显示的内容(显示“会议已被波兰语取消”)(但事件未在谷歌日历中删除/更新):

    enter image description here

2 个答案:

答案 0 :(得分:2)

您的ATTENDEE属性看起来不对。由于属性具有参数,因此属性名称后面的冒号字符不应该存在。

例如:

ATTENDEE:;CN="user1";RSVP=FALSE:mailto:user1@example.com

应该是这样的:

ATTENDEE;CN="user1";RSVP=FALSE:mailto:user1@example.com

答案 1 :(得分:0)

事实上,您的ATTENDEE属性需要更多参数来确保Google日历将其视为更新:

ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS- 
 ACTION;RSVP=TRUE;CN=Recipient Name;X-NUM-UESTS=0:mailto:recipient@gmail.com

我在这里提供了更完整的解释:https://stackoverflow.com/a/49585109/5669260