iPod touch Tips/Lotus Notesのカレンダーと同期する方法

出典: Fukudat

iPod touch Calendarの解析 に基づいてLotus Notes のカレンダーと iPod touch のカレンダーを同期する方法を編み出したので,忘れないうちに記録しておく.

動作の概略は以下の通り.

  1. Lotus scriptを使って,カレンダーエントリーをCSVファイルとしてエキスポートする.(このLotus scriptはLotus Notesのカレンダービューからボタンクリックで起動できる).
  2. 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 側で、

  • cygwinのベースおよび
    • openssh (iPod にファイル転送するため scp を使う)
    • Perl
  • CPANのText::CSV_XSパッケージ
  • SQLite V3

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 でコピーされる.