9

我正在构建一个为用户管理某些类型的事件的 web 应用程序。我想提供一种在用户的谷歌日历中显示这些事件的方法。

我真正希望的是一种发布我自己的谷歌日历兼容提要并允许用户订阅它的方法,就像他们可以订阅“有趣的日历”一样。这样,如果事件发生变化或添加了新事件,它们就会反映在他们的日历中。但看起来谷歌只允许用户以 ical 或 csv 格式导入日历数据,而不是 atom feed 格式。

问题是,我的 webapp 中的现有事件可以更改并添加新事件。我希望这些更改立即反映在谷歌日历中。而且我不能指望用户继续重新导入 ICAL 文件。以下 SO 问题非常相似,但并没有真正发布答案: Generate a Google Calendar compatible feed

我会以错误的方式解决这个问题吗?我是否需要使用 gdata API 来创建日历并向其发布事件?似乎发布 atom 提要会简单得多,但如果 google 无法订阅 atom 提要,那将无法正常工作。

如果我只是将我的活动发布为 ICAL 文件,谷歌日历会定期重新读取 URL 并更新数据吗?有些用户每天有 4 或 5 个事件,所以文件会随着时间的推移越来越大。这似乎真的不是一个好的解决方案。

4

3 回答 3

8

看看其他这样做的网站,谷歌似乎确实会定期重新读取 ical 格式的外部日历。

然后由您来调整您提供的 ical 提要,例如通过删除过去的日期。

所以要解决你的问题:

  • 生成一个 ical 文件并从您的网站提供服务
  • 让您的用户在 Google 日历中订阅它
  • 定期刷新ical文件,修剪旧数据

来自 TripIt.com 的 ics 文件的示例标题和开头,这似乎运行良好:

curl -v http://..../tripit.ics

< HTTP/1.1 200 OK
< Server: nginx
< Date: Fri, 29 Jan 2010 21:53:58 GMT
< Content-Type: text/calendar; charset=utf-8
< Transfer-Encoding: chunked
< Connection: close
< Expires: Fri, 29 Jan 2010 22:08:58 GMT
< Cache-Control: private
< 
BEGIN:VCALENDAR
X-WR-CALNAME:Malcolm Box (TripIt)
X-WR-CALDESC:TripIt Calendar
X-PUBLISHED-TTL:PT15M
PRODID:-//John Papaioannou/NONSGML Bennu 0.1//EN
VERSION:2.0
BEGIN:VEVENT
...
于 2010-01-28T22:39:22.243 回答
3

iCal 用户至少可以直接订阅 ics 文件。我发现 iCal 会在 20 分钟左右显示我的更新,甚至我猜测的延迟是因为我正在使用的日历 (JEvents) 只经常更新 ics 文件。

Google 日历需要数小时才能显示我的更改 - 即使我取消订阅并为同一 URL 创建新订阅,我也会看到很久以前删除的事件。

于 2012-10-26T01:40:25.193 回答
0

看起来要可靠地更新你必须使用 API 的谷歌日历:http ://code.google.com/apis/calendar/data/2.0/developers_guide.html虽然我会从务实的角度打赌,如果你拥有一个经常更新的 ical 文件,您将获得不错的性能。

于 2010-01-30T02:38:25.377 回答