ics ファイルを作るには
予定表を登録するためにicsのカレンダファイルを作る
ICS ファイルの構造
BEGINーENDで囲まれた内部にテキストを作る。
一番外側の BEGIN:VCALENDAR
BEGIN:VCALENDAR
VERSION:2.0
PRODID:takuya_1st-ics-events.rb
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME;VALUE=TEXT:takuyaの予定
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
BEGIN:STANDARD
DTSTART:19700101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
TZNAME:JST
END:STANDARD
END:VTIMEZONE
#{ics_events}
END:VCALENDAR
予定は VEVENT
BEGIN:VEVENT - END:VEVENTをブロックスとして、複数個の予定を入れていく。
BEGIN:VEVENT DTSTAMP:20150319T172703Z UID:5c9f8d9330dd09857532a82dfd579a48 DTSTART:20150430T030000 DTEND:20150430T040000 DESCRIPTION: お買い物 SUMMARY:牛乳を買いに行く(牛乳、バター、チーズを買う) END:VEVENT
日付時刻のフォーマットサンプル
ruby の strftime でフォーマットするとこんな感じ
events = [ [ [],[],[],[],], [ [],[],[],[],] ... ]
events = event.map{|e|
{ time_at:DateTime.parse( e[1] + " " + e[2] + " JST"),
name:e[4],
}
}
ics_events = fx_major_events.map{|e|
ical_event = <<-"DATA"
BEGIN:VEVENT
DTSTAMP:#{DateTime.now.strftime("%Y%m%dT%H%M%SZ")}
UID:#{Digest::MD5.hexdigest(e.inspect)}
DTSTART:#{(e[:time_at]).strftime("%Y%m%dT%H%M%S")}
DTEND:#{(e[:time_at]+1/24.0).strftime("%Y%m%dT%H%M%S")}
DESCRIPTION: #{e[:name]}
SUMMARY: #{e[:name]}
END:VEVENT
DATA
}.join("\n")