web-dev-qa-db-ja.com

名前、説明、更新間隔をiCal(ics)形式で指定する

私はiCalサブスクリプションカレンダーを作成していますが、これはすべて期待どおりに機能しています。カレンダーのクライアントに提案するデフォルトの名前、説明、更新頻度など、一見基本的なものを指定できないようです。

私はこの仕様リビジョンを見つけました: http://tools.ietf.org/html/draft-daboo-icalendar-extensions-06

それは私が欲しいフィールドを単に渡すことができることを示唆しています。これを実行すると、icsファイルの先頭は次のようになります。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//My Company//NONSGML Event Calendar//EN
URL:http://my.calendar/url
NAME:My Calendar Name
DESCRIPTION:A description of my calendar
TIMEZONE-ID:Europe/London
REFRESH-INTERVAL;VALUE=DURATION:P1D
COLOR:34:50:105
CALSCALE:GREGORIAN
METHOD:PUBLISH

私が試したことのあるデバイス/アプリがカレンダーを拒否していないのに、それらはすべてプロパティを無視していることがわかりました。私はOutlook 2010、iOS 6のiPhone、Googleカレンダーを使用しました。 Outlookは、ファイル内のある種の更新間隔を尊重すると主張していますが、カレンダーをサブスクライブすると、指定されていないと表示されます。

だから問題はこれらのプロパティがサポートされているか、それとも各クライアントごとに別のものとして指定する必要があるのか​​、それとも運が悪いのか?

28
Codecraft

答えは明白な目に隠れていたことがわかります。上記のプロパティは現時点ではドラフトの提案であり、私が試したものではサポートされていません。それらを将来のカレンダーに含めるのはおそらく良い策ですが、今でも機能するようにするには、次のようにします。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//My Company//NONSGML Event Calendar//EN
URL:http://my.calendar/url
NAME:My Calendar Name
X-WR-CALNAME:My Calendar Name
DESCRIPTION:A description of my calendar
X-WR-CALDESC:A description of my calendar
TIMEZONE-ID:Europe/London
X-WR-TIMEZONE:Europe/London
REFRESH-INTERVAL;VALUE=DURATION:PT12H
X-PUBLISHED-TTL:PT12H
COLOR:34:50:105
CALSCALE:GREGORIAN
METHOD:PUBLISH

現時点での実際の動作プロパティは次のとおりです。

X-WR-CALNAME
X-WR-CALDESC
X-WR-TIMEZONE
X-PUBLISHED-TTL
39
Codecraft

バージョン2.3.0でRails gem 'iCalendar'を使用している場合。以下は、カレンダー名などのカスタムプロパティを設定するソリューションです。

calendar = Icalendar::Calendar.new 
calendar.append_custom_property("X-WR-CALNAME","My Calendar")
9
Dave

icalendar Ruby gemの別のオプション:

calendar = Icalendar::Calendar.new
calendar.x_wr_calname = 'Calendar Name'
2
Richard Jones