Cybozu2ICal

Name

cybozu2ical - サイボウズオフィス6のカレンダーをiCalendar形式に変換するスクリプト

cybozu2ical-0.20.zip

Synopsis

 % cybozu2ical
 % cybozu2ical --conf /path/to/config.yaml

Description

cybozu2icalは、サイボウズオフィス6のカレンダーアイテムを取得して、iCalendar形式に変換するコマンドラインプログラムである。このプログラムを利用することで、サイボウズのカレンダーを、iCalendar形式をサポートするアプリケーション(Microsoft Outlook, Apple iCal, Google Calendarなど)に簡単に統合することができる。

このプログラムを、例えば一時間に一度、cronで実行することもできる。

Requirement

このプログラムはPerl 5.8.0以降、および以下のモジュールを必要とする:

  • Text::CSV_XS
  • Data::ICal
  • DateTime
  • YAML

Options

コマンドラインオプションとして以下が指定できる。

--output /path/to/output.ics
出力ファイルへのパスを指定する。デフォルトでは標準出力に出力する。
--conf /path/to/config.yaml
設定ファイルへのパスを指定する。デフォルトではカレントディレクトリのconfig.yamlファイルを設定ファイルとして利用する。
--compat-google-calendar
Google Calendarと互換性のあるiCalendar形式を出力する。 --debug: Cybozu Office 6のCSVデータを各イベントのCOMMENTとして出力する(デバッグ用)。
--input-csv /path/to/input.csv
Cybozu Office 6サーバにアクセスする代わりに、指定したCSVファイルを読み込んでiCalendar形式に変換する(デバッグ用)。
--output-csv /path/to/output.csv
Cybozu Office 6サーバから取得したCSVデータを指定したファイルに出力する(デバッグ用)。
--help
コマンドラインオプションを表示する。

Configuration

ディストリビューションには、サンプル設定ファイルconfig.yaml.sampleが含まれている。このファイルを適宜リネームし、設定すること。

cybozu_url
サイボウズオフィス6のURLを指定する。
calname
カレンダー名を指定する。X-WR-CALNAMEヘッダを利用するiCalendarアプリでは、ここで指定した文字列がカレンダーの名前として利用されることが期待される。
username, userid
サイボウズオフィス6のユーザ名もしくはユーザIDを指定する。
password
サイボウズオフィス6のパスワードを指定する。
time_zone
サイボウズオフィス6のTimeZoneを指定する(例: Asia/Tokyo)。
tzname
サイボウズオフィス6のTimeZoneを指定する(例: JST)。
input_encoding
サイボウズオフィス6のcharsetを指定する。デフォルトは「shiftjis」。
output_encoding
出力するicalファイルのcharsetを指定する。デフォルトは「utf8」。マルチバイト文字を数値文字参照で出力する場合には「ncr」を指定する。

Changes

0.20 (2007-10-17 17:16:49 +0900)

  • --output、--input-csv、--output-csvオプションの追加。
  • 対応する反復イベントの拡張。月の第何週かだけ繰り返すように指定したスケジュールに対応した。
  • MacOS X iCalendarのバグに対応するため、RRULE内でUNTILプロパティを最後に指定するようにした。
  • --compat-google-calendarオプションの追加。Google Calendarのバグに対応するためにRRULE内でWKST=SUプロパティを指定する必要があるが、この指定はMacOS X iCalendarと互換性がない。デフォルトではWKST=SUプロパティは出力せず、--compat-google-calendarオプションを指定した場合のみ出力するようにした。
  • その他、細かいリファクタリングなど。

0.13 (2007-06-18 10:38:39 +0900)

  • --debugオプションの追加。--debugオプション指定時に、VEVENTのCOMMENTとしてサイボウズオフィス6から取得できるCSVデータを出力するようにした。
  • VEVENTのUIDを生成するようにした。
  • 反復イベントにおいて、反復期間の先頭のイベントを削除(または削除せずに時刻のみ変更)すると、誤ったイベントデータが生成される問題に対処した。
  • 反復イベントのうち一部を削除(または時刻のみ変更)した場合にEXDATEを生成して正しく反復イベントを生成するようにした。
  • Data-ICalにおいて、EXDATEに「,」が含まれる場合に不必要なエスケープがなされてしまう問題に対処した。
  • OO-styleで書き直した。

0.12 (2007-03-22 13:39:06 +0900)

  • 反復イベント処理のデバッグ。時刻指定のある反復イベントのRRULEのUNTILはUTC時刻で指定し、時刻指定のない反復イベントのUNTILは日付で指定するようにした。
  • Google Calendarには時刻指定のない反復イベントの終了日時が一日ずれるバグがある模様。RRULEにWKST="SU"オプションを追加することでこの問題が回避できるようなので、そのように対処してある。

0.11 (2006-11-19 20:17:08 +0900)

  • 終了時刻が指定されない場合の処理で、開始時刻が10分遅れになる問題を修正。
  • 終了時刻が「24:00」と指定された場合に「23:59:59」に丸める処理を追加。
  • 開始・終了時刻が不正な範囲にある場合のエラー処理を追加。

0.10 (2006-11-10 00:18:31 +0900)

  • Cybozu Office 6からカレンダーデータを取得する処理をrefactoringして、WWW::CybozuOffice?6::Calendarモジュールに分離した。
  • 時刻を含まない日付情報(終日イベント、バナーイベントなどのDTSTART, DTENDなど)は、Date-Typeとして「DATE」を指定するようにした。
  • 反復イベントに対応した。

0.07 (2006-11-06 10:21:00 +0900)

  • 終了時刻のないイベントの日付フォーマットが壊れていたので修正。
  • イベントの「予定」のプルダウン項目をサポート。

0.06 (2006-09-04 14:11:59 +0900)

  • useridでのログインをサポート。

0.05 (2006-08-11 12:21:30 +0900)

  • Data::ICal::Property::_fold()でマルチバイト文字の途中でfoldしてしまう問題を回避。この対策は、fold前にdecode_utf8、fold後にencode_utf8しているため、fold文字列は「標準」の規定より長くなるが…しかたがない。
  • 終了時刻のないイベントに対応。
  • Numerical Character Referenceで出力する機能を追加。
  • X-WR-TIMEZONEヘッダを追加。
  • DTSTART/DTENDにTZIDプロパティーを追加。
  • config.yamlで入出力エンコーディングを指定できるようにした。

0.04 (2006-04-21 16:09:05 +0900)

  • 設定ファイルにcalnameオプションを追加。
  • 繰り返し予定で生じるエラーを回避。
  • VERSIONヘッダが不正だったのを修正。

0.03 (2006-04-17 16:59:25 +0900)

  • config.yamlファイルの指定方法を変更。

0.02 (2006-04-16 19:44:39 +0900)

  • サイボウズオフィス6のTimeZoneが指定可能になった。
  • Date::ICalをDateTimeに置き換え。
  • インストレーションスクリプトを追加。

0.01 (2006-04-16 01:29:24 +0900)

  • 公開。

Development

開発中のバージョンは以下を参照のこと。

/cybozu2ical/trunk

コメントやパッチはメールかチケットを使ってご連絡ください。

See Also

Author

Hirotaka Ogawa (hirotaka.ogawa at gmail.com)

This script is free software and licensed under the same terms as Perl (Artistic/GPL).