« JavaからwdCalendarのDBにアクセス | Main | icalendarへのアクセスを制限する »

2011.05.13

wdCalendarの内容をGoogleCalendarに取り込む

そんなこんなで、wdCalendarの内容をicalendar形式でエクスポートする仕組みを作ることができたので、それをGoogleカレンダー側にインポートしてみるテストを。

icalをエクスポートするためのURLをGoogleカレンダーに登録することで、サクッと簡単にインポートすることができました。ただ、いろいろと気になる点も・・・。

■元カレンダーを更新しても、Googleカレンダー側にすぐに反映されるわけではない
元カレンダーを設置しているサーバーのhttpログを確認してみると、6時間おきくらいにGoogleのサーバーからアクセスが来ているような感じ(Googleのサーバーからのアクセスの場合、UserAgentが Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)のような感じになるようです。
こちら のサイトでも、ただし,インポート後カレンダーに反映されるまで6時間ほど要する模様と記載されているので、そんなものなのかもしれません。ちなみに、Googleのヘルプによると、

現在、カレンダー フィードは、Google カレンダーによって数時間ごとに自動的に更新されます。 また、手動でカレンダーを更新したいというご要望も寄せられているため、この機能に対応することを検討しています。

とのことです。

■元カレンダーの既存の内容を更新しても、Googleカレンダー側に反映されない?
「元カレンダーに追加した」内容は、数時間後にGoogleカレンダーにも反映されるのは確認できたのですが、元カレンダーに既に登録していた内容を更新しても、その内容が反映されないという状況が。
iCalendarファイルのDTSTAMP、LAST-MODIFIEDか、SEQUENCE値が影響しているのかと思い、エクスポート時に毎回それらの値を更新するようにしてみました(wdCalendarのサンプルでは、それらの情報をDBに持っていないので・・・)。一応、Googleカレンダー側にも更新がきちんと反映されるようになったようです。ただ、3つの値のどれが効果があったのかは不明(^^; おそらく、SEQUENCE値ではないかと思うのですが・・・。ちなみに、wdCalendarのサンプルDBにはSEQUENCE値がないので、System.currentTimeMillis()/100000 の値をセットするようにして誤魔化しています(そのため、本来は更新がないはずなのにSEQUENCE値が増加してしまう)。

■「終日」を指定している予定がずれる
wdCalendarで「終日」を登録した場合、時刻は00:00で登録されます。終日以外だと、JSTで保存されていたのですが、iCalendarではGMTで出力する必要があったので、単純に時刻をずらしていたのですが、その結果、終日の予定が前日の15時で出力してしまっていました(^^;
あと、終日の予定の「終了日」ですが、例えば、「5/11終日」の予定は、Googleカレンダーの場合は「5/11~5/12」で扱われているようで(参考:iCalendar(rfc2445)で終日の予定のDTENDの正しい仕様は?)。なので、終日の場合、終了日を+1してエクスポートするようにして対応。

|

« JavaからwdCalendarのDBにアクセス | Main | icalendarへのアクセスを制限する »

パソコン・インターネット」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/51654887

Listed below are links to weblogs that reference wdCalendarの内容をGoogleCalendarに取り込む:

« JavaからwdCalendarのDBにアクセス | Main | icalendarへのアクセスを制限する »