Apr 15, 2006

Cybozu Office 6のカレンダーを Google Calendarで表示する

ちょっとコードを書いてみたら、Cybozu Office 6のカレンダーをGoogle Calendarで表示させることができたのでご報告。

Ogawa::Buzz: Google Calendarの後半でも述べたように、Google Calendarでは、Web上に公開してあるiCalファイルのURLをOther Calendarsに登録することで、任意のiCalファイルをインポート&表示できる。

したがって、Cybozu Office 6の外部連携用のインタフェースを(リバースエンジニアリングして)叩くか、scrapingするかしてスケジュール情報を取得し、それをiCal形式で出力してWebから参照できるようにしておきさえすれば、Google Calendarと連携できる。もちろんread-onlyだけど。

Cybozuカレンダーをscrapingするスクリプトは以下を参照。

Cybozu2ICal - ogawa - Google Code

開発版をsubversionで取得するには、コマンドラインから以下のように実行する。

$ svn co http://ogawa.googlecode.com/svn/trunk/cybozu2ical cybozu2ical

config.yamlにCybozu Office 6のURL、ログインユーザ名、パスワードを設定した上で、以下のようにコマンドラインから実行すれば、リモートにあるCybozu Office 6の公開状態のスケジュールアイテムがiCal形式で保存される。

$ ./cybozu2ical > cybozu.ics
あるいは
$ ./cybozu2ical --conf /path/to/config.yaml > cybozu.ics

こうして生成されたiCalファイルをWeb reachableなディレクトリに置こう。念のために予測されにくいファイル名にしておくことを勧める。

さて、Google Calendarでは以下の操作でこのURLをカレンダーに登録することができる。

  1. まず、左側のカレンダーリストのOther Calendarsの横の「+」をクリックする。
  2. 「Add Other Calendar」という画面が表示されるので、「Public Calendar Address」というタブをクリックする。
  3. 「Public Calendar Address」を入力するフィールドが表示されるので、iCalファイルのURLを入力して「Add」をクリックする。「Allow others to find this public calendar via Google Calendar search?」にチェックを入れておくとこのカレンダーが他のユーザの検索対象に加えられてしまうので要注意。
  4. しばらく待つと(結構時間がかかる場合もある)、追加したカレンダーの情報が左側のカレンダーリストやカレンダー本体に表示されるはず。

以上で設定は終了。あとは、cronなどでcybozu2icalを定期的に実行するようにしておけば、Google Calendarが定期的にクロールして同期を取ってくれる。ちなみにクローラのUserAgentは、「Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)」。

追記: 定期的にクロールするというのは勘違いだった。Troubleshootingのスレでも話題になっていた。追加時に一回だけクロールするというのは明らかにおかしな仕様なので中の人の対応を期待している。

Google グループ : Users - Troubleshooting

2005-04-26追記: 昨日の昼過ぎから3時間ごとにクロールされるようになっていた。テスト用に登録して動作確認後削除したicsファイルもクロールしに来ていてにんとも。

さて、奥一穂さんのWWW-CybozuOffice6というPerl Moduleがある。今のところ新着情報しかフェッチできないため、このエントリーの目的には役に立たないのだが、cybozu2ical.plの作成上大いに参考にさせていただいた。

Kazuho@Cybozu Labs: サイボウズ Office に Perl でアクセス

このモジュールは放置されているような気もするけど...、この機会に機能が充実するとよいなあ。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com