防止谷歌日历在远程 icalendar 文件更改时创建重复条目

Posted

技术标签:

【中文标题】防止谷歌日历在远程 icalendar 文件更改时创建重复条目【英文标题】:Prevent google calendar from creating duplicate entries when a remote icalendar file changes 【发布时间】:2012-05-23 16:55:36 【问题描述】:

我的大学校园里一直在发生很多活动,我们和其他一些学生一起认为,将活动时间表作为日历提供会很好。因此,组织者在 Intranet 上注册他们的活动,并将其添加到校园内的人们可以订阅的 icalendar 文件中。

当人们在 iPhone 上加载日历 URL 时,这很有效,但在 Google 日历中加载时就不行了。我们注意到两个问题:

    当您订阅日历然后注销并重新登录时,事件将不再可见。有时,单击刷新可以修复它。通风口不会从与您的帐户关联的 android 设备上消失。 当从 icalendar 文件中删除事件时(例如,如果它被取消),它仍然保留在与订阅日历的任何 google 帐户同步的 android 设备上。不过,新事件同步正常,所以并​​不是没有同步。

你知道我该如何解决这两个问题吗?我注意到VEVENTs 中的STATUS:CANCELLED 属性,但是当日历方法为PUBLISH 时,它似乎不起作用。

谢谢!

PS:如果您能建议一种比等待 Google 从服务器拉取更改更快地测试更改的方法,那就太好了;现在,我必须在每次测试之间等待大约 6 小时...

【问题讨论】:

【参考方案1】:

我的理解是从文件中删除它不是取消事件的方法。必须确保有一个唯一标识符来匹配任何更改。 还必须遵循取消/更改事件的规范。

见How to cancel an calendar event using ics files?

如果所有这些都是正确的,那么“订阅”日历的各种应用程序理论上应该在读取更新的文件时更新事件状态。不幸的是,其速度和频率取决于该应用程序。 (注意:还要注意订阅和“导入”之间的区别)

是的,我注意到谷歌有时更新速度很慢。我能想到的唯一一件事是使用另一个应用程序,您可以在其中控制订阅更新频率,以测试您取消事件的方式是否有效。一旦你看到那里发生了取消,然后在谷歌上继续测试(我注意到谷歌比一些应用程序更迂腐,所以你可能仍然需要努力让它 100% 在谷歌上运行。)

希望有帮助!

【讨论】:

【参考方案2】:

我已经尝试了这些建议,但 Google 日历只会添加另一个活动。 iCalendar 验证器说我生成的文件是有效的,如果 Mac 上的 iCal 有取消信息,它会删除一个事件。但 Google 日历或 Outlook 都没有。比较郁闷。

【讨论】:

以上是关于防止谷歌日历在远程 icalendar 文件更改时创建重复条目的主要内容,如果未能解决你的问题,请参考以下文章

谷歌日历 API。同时修补事件时修改丢失

php 活动日历:将活动档案的iCalendar导出链接更改为webcal://

php 活动日历:将活动档案的iCalendar导出链接更改为webcal://

从 PHP 时区值生成 iCalendar VTIMEZONE 组件

在 OCaml 中导入和解析日历

ical4j 实现ICS文件的生成和解析