使用“添加到日历”链接时,Google日历会忽略ICS UID

时间:2017-10-01 03:51:51

标签: gmail google-calendar-api icalendar

开发应用程序,申请人通过第三方服务安排与我们的团队成员面谈。我们会定期向第三方发出API调用以进行最近的更改,生成ICS文件,然后将该文件通过电子邮件发送给我们的团队成员,以便他们将其存储在Google日历中。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Google Inc//Google Calendar 70.9054//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20171001T180000Z
DTEND:20171001T190000Z
SUMMARY:Sample Event
UID:5179167a74d55b6fbaf6193026af14de@example.io
DTSTAMP:20171001T023000Z
ORGANIZER:noreply@example.io
SEQUENCE:0
END:VEVENT
END:VCALENDAR

我遇到的问题是,当团队成员点击Google Mail生成的“添加到日历”链接时。它忽略了我生成的UID, 5179167a74d55b6fbaf6193026af14de@example.io ,并创建了它自己的: 20d19q1acurfub15pe94hb1b7s@google.com

因此,当对事件进行更新时,UID与Google正在存储的不同,因此它会创建一个全新的事件而不是更新现有事件。在下面的示例中,事件提前1小时移动:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Google Inc//Google Calendar 70.9054//EN
CALSCALE:GREGORIAN
METHOD:REQUEST
BEGIN:VEVENT
DTSTART:20171001T190000Z
DTEND:20171001T200000Z
SUMMARY:Sample Event
UID:5179167a74d55b6fbaf6193026af14de@example.io
DTSTAMP:20171001T023224Z
ORGANIZER:noreply@example.io
SEQUENCE:1
END:VEVENT
END:VCALENDAR

现在,对于两个不同的 xxx@google.com UID,同一次访谈有两个事件。

我发现如果我直接导​​入ICS文件,而不是使用“添加到日历”链接,则UID将保留为最初创建的,并且更新/取消按预期工作。由于在Google日历中导入事件的过程并不是最简单的工作流程和我们期待的大量事件,因此我希望保留“添加到日历”方法。

有关我在这里做错了什么的建议吗?

1 个答案:

答案 0 :(得分:0)

您发送的会议请求没有任何ATTENDEE属性。根据{{​​3}}强制要求ATTENDEE 这是日历服务器混淆的最可能原因。