この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
弊社にて販売しているSNSパッケージはスケジューラとして社内で利用されていますが、icalデータとして出力するインターフェースも持ち合わせているので、折角だからGoogleカレンダーと同期をとって利用したいと思います。
GCALDaemonというソフトウェアを利用すれば、比較的簡単に同期が実現できます。
今回は Mac OS X 10.6 上で設定を施してみたいと思います。
■ 必要なもの
- Java 1.5 以上のランタイム環境
- Gmailのアカウント
- iCal 互換のアプリケーション
■ Mac OS X へのインストール
http://sourceforge.net/projects/gcaldaemon/files/linux/ からLinux用バイナリzipをダウンロードし、
mkdir -p ~/gnu/ などとしてインストール用ディレクトリを作成します。
そこで以下のオペレーションを実行します。
cd ~/gnu
unzip ~/Downloads/gcaldaemon-linux-1.0-beta16.zip
chgrp -R admin ~/gnu/GCALDaemon
chmod -R g+w ~/gnu/GCALDaemon
chmod 755 ~/gnu/GCALDaemon/bin/*.sh
設定をテストするため、以下のコマンドを実行します。
cd ~/gnu/GCALDaemon/bin
./password-encoder.sh
Your Google password: Googleアカウントのパスワードを入力します
Original password: 上で入力したパスワードが表示されます
Encoded password: xxxxxxxxxx ここで出てきた文字列を後ほど利用します
Sample configuration options for GCALDaemon:
file.google.password=xxxxxxxxxx
ldap.google.password=xxxxxxxxxx
notifier.google.password=xxxxxxxxxx
sendmail.google.password=xxxxxxxxxx
mailterm.google.password=xxxxxxxxxx
この後で設定ファイルも編集します。~/gnu/GCALDaemon/conf/gcal-daemon.cfg を開いてください。
% diff -U0 gcal-daemon.cfg.default gcal-daemon.cfg
--- gcal-daemon.cfg.default 2011-05-23 20:36:16.000000000 +0900
+++ gcal-daemon.cfg 2011-05-23 20:42:32.000000000 +0900
@@ -62 +62 @@
-file.ical.path=/usr/local/sbin/GCALDaemon/google.ics
+file.ical.path=/Users/myname/gnu/GCALDaemon/ical.ics
@@ -65 +65 @@
-file.google.username=example@gmail.com
+file.google.username=myname@gmail.com
@@ -68 +68 @@
-file.google.password=328$$gbv1WZhRGbhN2Z
+file.google.password=047$hogehogehog
@@ -71 +71,2 @@
-file.private.ical.url=/calendar/ical/example%40gmail.com/private-495cf94a5c0f1bfg/basic.ics
+file.private.ical.url=/calendar/ical/myname%40gmail.com/private-f1ldld54d7f9888316e6dlflf9ldld8hoge/basic.ics
+
設定差分は上記の通りです。
また、file.private.ical.urlに関してはGoogleカレンダーの設定から「限定公開URL」のICALリンクをクリックしてでてきた文字列のhttps://www.google.com/以降の文字列をペーストしてください
ここまでで基本的な設定はできました。一度きちんと同期ができるか、以下のコマンドを実行してみてください。
% ~/gnu/GCALDaemon/bin/sync-now.sh
コマンドを実行した後、ical.icsファイルの内容がGoogleカレンダーに反映されていたら成功です。
icalファイルを出力するアプリケーションに対してwgetやcurlなどでファイルをgetするようcrontabにしかけておきます。
% crontab -l
0 * * * * (cd ~/gnu/GCALDaemon ; curl -O http://sns.kbmj.jp/users/myname/calendar/ical.ics ; /Users/myname/gnu/GCALDaemon/bin/sync-now.sh ) > /dev/null 2>&1
これで1時間おきに同期がおこなわれた事になります。
他にもいろんなパターンでカレンダー同期がGCALDaemonで出来ますので、是非試してみていただければと思います。