プロジェクトにカレンダー(icsファイル)をインポートする機能を追加しました。コードは次のようなものです。
events = ICS::Event.file(File.open(ics_temp_file))
events.each do |event|
if event.summary and event.started_on and event.description
Event.create(:description => event.description == '\n' ? nil : event.description,
:organization_id => @organization.id,
:user_id => current_user.id,
:event_type => Event::OTHER,
:date_time => event.started_on,
:title => event.summary,
:active => true)
else
logger.warn("***Error*** Importing ics (bad event)")
end
end
ご覧のとおり、私はgemicsを使用しています。私は数か月前に調査しましたが、icsファイルのイベントを抽出するというicsファイルのペアリングに最適なオプションのように見えました。このgemは、次のようなイベントを抽出できます。
BEGIN:VEVENT
something here
END:VEVENT.
問題は次のとおりです。一部のユーザーはカレンダーをインポートしようとしましたが(カレンダーの作成に使用したツールがわかりません)、イベントは次のようになります。
BEGIN:VFREEBUSY
something here
END:VFREEBUSY.
それで、手がかりは、icsファイルを解析するためのより良い代替案を知っていますか?おそらく、あらゆる種類のイベントを抽出できるもので、events.map(&:vevents)やevents.map(&:vfreebusy)のようなものを実行できます。これを処理するためのアイデアはありますか?ありがとうございました!
編集:申し訳ありませんが、この宝石の既知の属性のリストはこれであることに言及するのを忘れています
TRANSP
DTEND
UID
DTSTAMP
LOCATION
DESCRIPTION
URL
STATUS
SEQUENCE
SUMMARY
DTSTART
CREATED
# For the alarm…
# BEGIN:VALARM (ignored)
X-WR-ALARMUID
TRIGGER
ATTACH
ACTION
# END:VALARM (ignored)
したがって、このgemがすべての種類のイベントを抽出していない理由を簡単に理解できます。