9

ユーザーの特定の種類のイベントを管理する webapp を構築しています。これらのイベントをユーザーの Google カレンダー内に表示する方法を提供したいと考えています。

私が本当に望んでいたのは、独自の Google カレンダー互換フィードを公開し、ユーザーが「興味深いカレンダー」を購読できるように、それを購読できるようにする方法でした。イベントが変更されたり、新しいイベントが追加されたりすると、それらがカレンダーに反映されるようにします。しかし、Google では、ユーザーがカレンダー データを ical または csv 形式でのみインポートできるようにしており、atom フィード形式ではインポートできないようです。

問題は、Web アプリケーションの既存のイベントが変更され、新しいイベントが追加されることです。それらの変更をすぐに Google カレンダーに反映させたい。また、ユーザーが ICAL ファイルを再インポートし続けるとは思えません。次の SO の質問は非常に似ていますが、実際には回答が投稿されていません: Google カレンダーと互換性のあるフィードを生成する

私はこれについて間違った方法で進んでいますか?カレンダーを作成してイベントを公開するには、gdata API を使用する必要がありますか? アトム フィードを公開する方がはるかに簡単に思えますが、Google がアトム フィードをサブスクライブできない場合、それは機能しません。

イベントを ICAL ファイルとして公開した場合、Google カレンダーは定期的に URL を再読み込みし、データを更新しますか? 一部のユーザーは毎日 4 つまたは 5 つのイベントを持っているため、ファイルは時間の経過とともにどんどん大きくなります。これは本当に良い解決策ではないようです。

4

3 に答える 3

8

これを行う他のサイトを見ると、グーグルは定期的に外部カレンダーをical形式で再読み込みしているように見えます。

次に、過去の日付を削除するなどして、提供するicalフィードをトリミングするのはあなた次第です。

だからあなたの問題を解決するには:

  • icalファイルを生成し、Webサイトから提供します
  • ユーザーに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を使用する必要があるGoogleカレンダーを確実に更新するように見えます:http ://code.google.com/apis/calendar/data/2.0/developers_guide.html適切な頻度で更新される ical ファイルがあれば、適切なパフォーマンスが得られます。

于 2010-01-30T02:38:25.377 に答える