iCalデータからOffice365への移行時の注意

今までは、プライベートのスケジュール管理は自前のiCalサーバで管理していました。
今回、Office365を契約していることもあり、こちらに移行したいと思いまして実施してみました。

Office365のスケジュール機能は、outlookなわけですが、
データをインポートする際には、icsファイルを用意することになります。

MaciCalを利用している人は、
iCalの書き出し機能を利用してicsファイルとしてエクスポートできます。
基本的にこのicsファイルをインポートすればいいのですが、
ものによってはエラーがでてインポートに失敗することがあります。

残念ながら、画面上だとなぜエラーになるのか
さっぱり情報が得られないのが苦しいところなのですが。。
少し切り分けしてみると以下の条件があることがわかってきました。

条件1: リマインダー機能等を利用している
条件2: タイムゾーンを複数持っている

条件を説明する前に、少しicsファイルの構造を説明する必要があります。
(icsの構造はシンプルでテキストエディタで開いて中身を確認できます)

http://www.asahi-net.or.jp/~CI5M-NMR/iCal/ref.html

上記サイトがわかりやすくまとまっているのですが、
icsのデータ構造は、

BEGIN:属性名 で始まり、
END:属性名  で終わります。

BEGIN~ENDの間に実際のデータや設定値を格納していく形式です。

例えば、BEGIN:VEVENT~END:VEVENTは
実際のスケジュールの内容が書かれている項目になります。
実際のデータを覗くと下記のような項目がテキストファイルにはずらずらと並びます。

BEGIN:VEVENT
CREATED:
UID:
DTEND;TZID=Asia/Tokyo:20160703T200000
SUMMARY:買い物(スケジュールのタイトル)
DTSTART;TZID=Asia/Tokyo:20160703T190000
DTSTAMP:
LOCATION:どこか
SEQUENCE:
END:VEVENT

"VEVENT"以外にも属性はあり、
"VALARM"・・・これは文字通りアラームを設定した場合に付与される
"VTODO" ・・・これも文字通りTODOを設定した場合に付与。
       リマインダーを利用する人はこの項目がicsファイルに多いはず。

ここでやっと本題のなぜうまくいかないかの説明に戻ると、
条件1は、outlookがVTODOをサポートしていないからと思われる。
条件2は、"VTIMEZONE"というタイムゾーン設定をする属性があるのだが、
     outlookが一つしか"VTIMEZONE"の設定値を許可していないと思われる。
     iCalから出力したicsファイルには複数の"VTIMEZONE"を出力できていたので、
     iCalは複数のタイムゾーン設定を許可しているはず。

本当はOffce365のoutlookの正式な仕様を知りたいのだが、、
どこかに公開されていないかな。

以上、簡単ですが切り分け結果でした。