Ruby スクリプト dba2ics を使って,Palm Desktop 4 の dba 形式のファイルを iCalendar 形式に変換する。Ruby は Cygwin 上で動作させる。
Palm の予定表を Google Calendar に移行する方法を試してる (nlog(n): Palm の予定表を Google Calendar に移行する方法)。今回は Ruby スクリプトを使うものを紹介する。
動作環境は,Windows Vista Business SP 2,Cygwin 1.5。Ruby スクリプトは,snbhsmt_log さんが公開しているものを使う。Ruby スクリプトは OS によらないので,Linux でも動作するはず。変換元のファイルは Palm Desktop 4 形式の datebook.dat で,これを iCalendar 形式に変換する。定期的に繰り返される予定にも対応している。
スクリプト作者の snbhsmt さんに感謝する。
Cygwin は Windows 上で動作する Unix/Linux ライクな環境である (Cygwin Information and Installation)。現時点の最新版はバージョン 1.7.1。1.5 から 1.7 への移行は手動操作が必要で,面倒なのでやっていない。今回は 1.5 を使う。
Cygwin 内の Ruby はデフォルトではインストールされないので,setup.exe 内で明示的に指定してやる必要がある。Ruby は,「Devel」セクション内にある。インストールされるバージョンは 1.8.7-p72-2 である。
Cygwin の作業ディレクトリは,上位ディレクトリに半角スペースや日本語が入っていない場所を選ぶのがよい。意味不明のエラーを回避することができる。
次に RubyGems をインストールする。Cygwin では,ソースコードを取得してインストールする (RubyGems のインストール)。RubyGems の現時点での最新版は 1.3.5 となっている (RubyForge: RubyGems: Project Filelist)。
RubyGems をインストールすると,gem コマンドが使えるようになる。gem コマンドは,ネットワーク経由でパッケージを取得してインストールまでしてくれる優れものである。Perl の cpan コマンドみたいな。次のように,gem で icalendar パッケージをインストールする。
icalendar は /usr/lib/ruby/gems/1.8/gems/ ディレクトリにインストールされるが,このディレクトリを意識しておく必要はない。
必要なスクリプトは次の通り。
作業ディレクトリにこれらのスクリプトと,Palm Desktop 4 の datebook.dat を保存すれば準備完了。
次のコマンドを入力すればよい。dba2ics.rb に実行権限を与えておけば ruby コマンドは不要。
実行に成功すれば datebook.ics というファイルが出来上がる。これを Google Calendar にインポートすればよい。
datebook.dat に何らかの問題がある場合,エラーが発生して処理が止まる。例えば,次のような具合になる。
メッセージ内容からすると,日付のフォーマットに問題があるようだ。この datebook.dat は,Palm 本体と Palm Desktop で HotSync させたときに,予定表の同期の画面のままいつまで経っても HotSync が終わらない現象が起きていたファイルである。
Palm Desktop 6 の形式の datebook.dat の場合は,次のエラーで停止する。
Ruby コマンドで生成された datebook.ics を Google Calendar でインポートしようとしたところ,次のエラーが表示された。
エラー箇所の予定を削って再度試みたが,そうするともっと前の予定で同じエラーが発生してしまった。その場合は,Sunbird あるいは,Thunderbird の Lightning 拡張で読み込み (Calendar プロジェクト - Lightning と Sunbird®のホーム),Google と同期させればよい。
Palm Desktop 4 形式の datebook.dat は,Ruby スクリプト dba2ics で iCalendar 形式に変換することができる。定期的な予定にも対応している。定期的な予定の中で一部だけが変更されているようなものには対応していないとのことだが (iCalendar の繰り返し予定の例外 - snbhsmt_log),そのような予定はごく稀であるので無視できる範囲だろう。
Posted by n at 2010-01-28 23:03 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957