Google calendar api 如何为谷歌日历发布动态事件提要?

Google calendar api 如何为谷歌日历发布动态事件提要?,google-calendar-api,gdata,gdata-api,atom-feed,Google Calendar Api,Gdata,Gdata Api,Atom Feed,我正在构建一个webapp,为用户管理特定类型的事件。我想提供一种在用户的谷歌日历中显示这些事件的方法 我真正希望的是发布我自己的谷歌日历兼容订阅源,并允许用户订阅,就像他们可以订阅“有趣的日历”。因此,如果事件发生更改或添加新事件,它们将反映在日历中。但谷歌似乎只允许用户以ical或csv格式导入日历数据,而不是atom提要格式 问题是,我的webapp中的现有事件可能会更改,并且会添加新事件。我希望这些变化立即反映在谷歌日历上。我不能期望用户继续重新导入ICAL文件。下面的问题非常相似,但并

我正在构建一个webapp,为用户管理特定类型的事件。我想提供一种在用户的谷歌日历中显示这些事件的方法

我真正希望的是发布我自己的谷歌日历兼容订阅源,并允许用户订阅,就像他们可以订阅“有趣的日历”。因此,如果事件发生更改或添加新事件,它们将反映在日历中。但谷歌似乎只允许用户以ical或csv格式导入日历数据,而不是atom提要格式

问题是,我的webapp中的现有事件可能会更改,并且会添加新事件。我希望这些变化立即反映在谷歌日历上。我不能期望用户继续重新导入ICAL文件。下面的问题非常相似,但并没有给出答案:

我走错方向了吗?我是否需要使用GDataAPI来创建日历并向其发布事件?发布atom提要似乎要简单得多,但如果谷歌不能订阅atom提要,那就行不通了


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

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

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

因此,要解决您的问题:

  • 从您的网站生成ical文件并提供服务
  • 让您的用户在谷歌日历中订阅它
  • 定期刷新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
...
curl-vhttp://..../tripit.ics
要可靠地更新谷歌日历,您必须使用API:尽管从实用的角度来看,我敢打赌,如果您有一个经常更新的ical文件,您将获得良好的性能。

ical用户至少可以直接订阅ics文件。我发现iCal会在20分钟左右的时间内显示我的更新,甚至我猜是因为我使用的日历(JEvents)只会每隔一段时间更新ics文件


Google Calendar花了数小时来显示我的更改-即使我取消订阅并创建对同一URL的新订阅,我也会看到很久以前被删除的事件。

谢谢,但根据这篇文章,谷歌不能可靠地从URL更新:你有没有以ical格式发布的网站的例子可以可靠地工作?我刚刚用TripIt尝试过——获得了webcal://链接(指向ics文件),并将其添加到谷歌。然后在tripit.com上添加了另一个事件,返回到谷歌,并立即显示。谢谢马尔科姆!这看起来很有希望。我希望只需要提供一个ics提要就可以支持谷歌日历、iphone、ical、outlook等等。如果它对tripit起作用,那么我也应该能够让它起作用。Aerik,我同意——使用GDataAPI可能是最可靠的方法。但它对iPhone、iCal、Outlook和其他用户没有帮助。我最终可能会选择gdata,但如果ics提要可以在谷歌中可靠地使用,我会先试试。