snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Palm Desktop の予定データを iCalendar 形式に変換

Palm Desktop の予定のデータを Google カレンダに持ってく為の変換プログラムを Ruby で書いた。 以前ブログに書いた dbareader.rb が必要。

入力は Palm Desktop の予定をエクスポートした *.dba ファイル。 以下の様に実行して出来た iCalendar 形式のファイルを Google カレンダにインポートする。
$ ./dba2ics foo.dba > foo.ics

自分のデータを変換するためだけに作ったので、 他人のデータも正しく変換できる保証はまったく無い。
そういえば、繰り返し予定の例外に対応していない。 その場合、例外の元と先の 2 件の予定が作成されると思うので、 元の方を削除しなければならない。
スポンサーサイト

続きを読む »

iCalendar の繰り返し予定の例外

iCalendar の繰り返し予定は RRULE で指定する事は分った。 でも、その繰り返し中の特定の日だけ日時をずらしたり削除したり する事がある。これらはどう表現するのか。 Google カレンダでそういう予定を作成してエクスポートして内容を見てみた。

元になる予定として、2009/08/26 9:00~10:00 が 8/29 まで繰り返す予定を定義。
BEGIN:VEVENT
DTSTART;TZID=Asia/Tokyo:20090826T090000
DTEND;TZID=Asia/Tokyo:20090826T100000
RRULE:FREQ=DAILY;UNTIL=20090829T000000Z;WKST=MO
UID:7e8oi2hfvtntpvq0iv9819fqc4@google.com
END:VEVENT

続きを読む »

Google カレンダでウェブから作成できない予定をインポート

Google カレンダの繰り返し予定は、ウェブインターフェイスから 指定できる以上の条件を解釈してくれる様だ。 以下 Google カレンダにインポートできる iCalendar の RRULE の例。

毎月末の予定
BYMONTHDAY に月末を表す -1 を指定。 1/31, 2/28, 3/31, 4/30, ... と繰り返す。 当然 INTERVAL, UNTIL とかも一緒に指定できるから隔月末の予定とかも可能。
DTSTART;TZID=Asia/Tokyo:20090131T100000
DTEND;TZID=Asia/Tokyo:20090131T103000
RRULE:FREQ=MONTHLY;BYMONTHDAY=-1

続きを読む »

iCalendar の繰り返し予定を作成

iCalendar の繰り返し予定を作成してみた。

Ruby の icalendar モジュールで、 RRULE は ical_multi_property (icalendar/component/event.rb) として 定義されているので add_rrule で指定する。 しかし、なぜ multi property なのか。 ical_multi_property は add_* で複数回指定でき、 追加された順にカンマで区切られて出力される。 BYDAY=MO,TU とか、カンマで区切られるから それらを別々に add しろって事なのか?

実際 add_rrule してみるとセミコロンとカンマがエスケープされてしまって具合が悪い。 だから Icalendar::Component#escape_chars() を定義し直して、 値が :FREQ で始まってたら RRULE の指定だと判断してカンマとセミコロンの エスケープをしない様にしてしまった。 行き当たりばったりな対応だけど、とりあえず動けばいい。

続きを読む »

iCalendar のアラームの指定

iCalendar の予定データを出力する Ruby のスクリプトに、 アラームの設定を追加して Google カレンダにインポートしてみた。

Google カレンダでは、メールの送信先は必ず Google アカウントに登録してある メールアドレスになるみたい。そして、画面表示やメールのメッセージの方も event で指定した summary と description になるらしい。

続きを読む »

Ruby で iCalendar の予定データを作成する

Ruby で iCalendar の予定データを作成してみた。 先日インストールした icalendar モジュールを使用している。

日時は、終日の予定の場合は Date オブジェクト、 時間指定ありの場合は DateTime オブジェクトを渡す。

日本語を指定する場合は toutf8 して渡す。 Icalendar::Component#add_sliced_text() が、iCalendar の仕様である 1 行 75 オクテッド分割処理を行っているので UTF-8 にしておく必要がある為 (ただし実際には 75 文字で分割してるので仕様通りになってないけど) 。

続きを読む »

Ruby で iCalendar の予定データを読む

Ruby で iCalendar を扱いたいのでモジュールを探してみた。
$ gem search -r icalendar

*** REMOTE GEMS ***

icalendar (1.1.0)
vpim_icalendar (1.1)
この他に github で RiCal というのを見つけた。 ネット上には icalendar モジュールの情報がいちばん有るみたいなので、 とりあえず icalendar をインストール。
$ sudo gem install icalendar

続きを読む »

Palm Desktop の予定データを読む Ruby スクリプト

先日の Palm Desktop の Todo データを読む Ruby スクリプト に続いて、今回は Palm Desktop の予定データをエクスポートすると出来る *.dba ファイルを Ruby で読んでみた。

dba ファイルのフォーマットは以下のページを参考にしました。
Palm Pilot Desktop Software DATEBOOK.DAT and DATEBOOK.DBA File Structure

今回のスクリプトも tdareader.rb と同じく StreamReader を使ってる。

続きを読む »

Palm Desktop の Todo データを読む Ruby スクリプト

Palm Desktop の Todo をエクスポートすると出来る *.tda ファイルを Ruby で読んでみた。

tda ファイルのフォーマットは以下のページを参考にしました。
Palm Pilot Desktop Software TODO.DAT and TODO.TDA File Structure
Field Name をそのままハッシュ名に使ってるので、 どこで何を読んでるのかは見れば分ると思います。

続きを読む »

Top

HOME

snbhsmt

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。