iPod touch Tips/Lotus Notesのカレンダーと同期する方法
出典: Fukudat
iPod touch Calendarの解析 に基づいてLotus Notes のカレンダーと iPod touch のカレンダーを同期する方法を編み出したので,忘れないうちに記録しておく.
動作の概略は以下の通り.
- Lotus scriptを使って,カレンダーエントリーをCSVファイルとしてエキスポートする.(このLotus scriptはLotus Notesのカレンダービューからボタンクリックで起動できる).
- Perl scriptを使って,CSVファイルの,iPod touchのカレンダーが予定管理に使っているファイル (SQLite データベース)に書き込み,Wireless LAN につながっている iPod に転送する.(このPerl scriptはWindowsのクイック起動タスクバーからマウスクリックで起動できる).
できれば,シングルアクションで同期したいところだが,Lotus Scriptでは外部コマンドが呼び出せないので,2ステップとなっている.
なお,現在はLotus Notes-->iPod touchの一方通行のみサポートしており,iPod touchで入力した予定(新規作成・変更ともに)はLotus Notesに読み込まれない.やろうと思えばできるんだけど,もう1 Step増えて3 Stepになるのと,競合した場合の処理が面倒くさいので一方向としている.
目次 |
準備
必要な道具として
- Lotus Notes (Designer付き)
- jailbroken iPod touch
の他に, Lotus Notes が動いている Windows PC 側で、
iPod touch側で
- BSD Subsystem
- OpenSSH
を使う.
Lotus Script
Mail DB (カレンダーが入っている)をLotus Notes Designerで開き, Views->($Calendar)をオープンする. プルダウンメニューのCreate (作成)->Action(アクション)->Action(アクション)を選択し, "Export Schedule" アクションを作成.Viewからボタンで起動できるようにして,Media:sync-iPod-Calendar.lsの中身をコピペする.
このLotus Scriptは,Mail DB内にあるカレンダーエントリーのうち,iPod touchに格納可能な2001/1/1以降のものを以下ののCSVフォーマットで %TMP%\calendar.csv に出力する.
| 列番号 | 列名 (参考) | 説明 |
|---|---|---|
| 1 | summary | イベントタイトル |
| 2 | location | 場所 |
| 3 | description | 本文 |
| 4 | start_date | 開始日時 (YYYY/MM/DD hh:mm:ss) |
| 5 | start_tz | 開始時日時のタイムゾーン |
| 6 | end_date | 終了日時 (YYYY/MM/DD hh:mm:ss) |
| 7 | event_type | イベントの種類 |
Perl Script
Media:sync-iPod-CalendarをPATHの通ったディレクトリに置き,実行パーミッションを与える. このPerl scriptは次のように3個の引数を取る.
Usage: sync-iPod-Calendar csvfile dbfile ip-addr-of-ipod
csvfileは上のLotus scriptが生成したCSVファイル,dbfileはこのPerl scriptがSQLiteを使って作成するデータベースファイル,最後にip-addr-of-ipodはiPod touchのIP addressである. csvfileを読んで,そこにあるカレンダーエントリーの情報を,新規に作成する SQLite DBファイル dbfileに書き込み,その結果を ip-addr-of-ipod に scp を使って転送する.
なお,終日イベントは前日に,そのほかのイベントは5分前にアラームがなるように設定している.
起動しやすいように,どこかクリックしやすい場所(クイック起動タスクバーなど)にショートカットを作っておこう.ショートカット先は
bash.exe -i -c 'sync-iPod-Calendar $TMP/calendar.csv calendar.db ip-addr-of-ipod'
とでもするとよい. -i としているのは,.bash_profileを読ませるためで,私は .bash_profile で ssh-agent と接続するための環境変数を設定している.これによりiPod touchにパスワードなしでファイル転送ができている.
使い方
まず Lotus Notes でボタンを押して Lotus Script を走らせる.すると %TMP%\calendar.csv ができるので,引き続いてショートカットアイコンをダブルクリックして Perl Script を走らせる.すると %TMP%\calendar.csv を元に SQLite データベースファイルが作成され,それが iPod touch に ssh でコピーされる.
