Edited at

.csvの情報を.ica形式に整形するメモ


はじめに

CEDEC2018の講演スケジュールをGoogleカレンダーで確認できるようにしたので、その手順をメモしておこうと思います。

https://calendar.google.com/calendar/embed?src=a20r4f6oav5tr5mi99cidt8mgk%40group.calendar.google.com&ctz=Asia%2FTokyo


手順

まずCEDECの公式ページで配布されているcsvファイルをダウンロードしてきます。

https://2018.cedec.cesa.or.jp/

ここで、.ica形式の説明です。

Googleカレンダーで採用されている.icaはRDFカレンダーという仕様がベースになっています。これはラベルと値が:で区切られた形式です。ある程度標準的な規格で、Appleのカレンダーアプリなどでも使用できます。

例えばこちらの予定は…

スクリーンショット 2018-08-26 0.07.12.png

以下のような記述で表現されています。


基調講演

BEGIN:VEVENT

DTSTART:20180822T004500Z
DTEND:20180822T020500Z
DTSTAMP:20180822T000000Z
CLASS:PUBLIC
CREATED:20180822T000000Z
DESCRIPTION:講演者:任天堂株式会社 宮本 茂\n主分野:カテゴリなし\n副分野:\nプラットフォーム:\n難易度:0:甘口(学生含めどなたでも)\n特記事項:\nURL:https://2018.cedec.cesa.or.jp/session/detail/s5b1e23aaede0a
LAST-MODIFIED:20180822T000000Z
LOCATION:メインホール
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:[メインホール]「どこから作ればいいんだろう?から10年」
TRANSP:OPAQUE
END:VEVENT

※いくつかの省略可能な値を省略しています。完全なものを確認したい場合は、自身のGoogleカレンダーからファイルをエクスポートしてみてください。

参考: RDFカレンダー -- iCalendarとRSSによるイベント情報の公開と活用

ここに.csvの値を整形していれていきます。今回はエクセルを使用しました。

こちらのデータを例に進めます。

スクリーンショット 2018-08-25 23.33.42.png

まず必要な値を準備します。

先の基調講演のデータを見ると、少し見慣れない形式の値があります。

DTSTART:20180822T004500Z

これはISO 8601と呼ばれるフォーマットです。

年月日の後ろにTを、時分秒の後ろのZが必要になります。

参考: 日時のフォーマット(ISO 8601) - Qiita

上記のフォーマットにしたがい、TEXT関数を用いてエクセルで整形すると以下のようになります。


N2

=TEXT(A2-TIME(9,0,0),"YYYYMMDDThhmmssZ")


注意したいのがUTC表記という点で、TEXT関数はJSTの値として扱われるため、その差異を修正する必要があります。今回は簡易的にTIME関数を用いて標準時との差である9時間分を引くことで求めました。

同様に他の時間の値を整形しておきます。

また、DTSTAMPCREATEDは決めうちの値としました。


O2

=TEXT(B2-TIME(9,0,0),"YYYYMMDDThhmmssZ")


ではこの値をRDFカレンダーの仕様に沿っていれていきます。

エクセルは1セルの上限が255文字までなので、分割して結合する方法をとりました。


P2

="BEGIN:VEVENT

DTSTART:"
&N2&"
DTEND:"
&O2&"
DTSTAMP:20180822T000000Z
CLASS:PUBLIC
CREATED:20180822T000000Z
"



Q2

="DESCRIPTION:講演者:"&E2&"\n主分野:"&F2&"\n副分野:"&G2&"\nプラットフォーム:"&H2&"\n難易度:"&I2&"\n特記事項:"&J2&"\nURL:"&K2&"

LAST-MODIFIED:20180822T000000Z
LOCATION:"
&L2&"
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:["
&L2&"]"&D2&"
TRANSP:OPAQUE
END:VEVENT"



R2

=P2&Q2


これで各予定(講演)の情報が整形できました。

最後に必要なヘッダー情報と共に、.icaファイルとして保存します。以下はヘッダーの例です。


calendar.ica

BEGIN:VCALENDAR

PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:CEDEC 2018 セッション一覧
X-WR-TIMEZONE:Asia/Tokyo
X-WR-CALDESC:

// ここに各予定の情報が入る

END:VCALENDAR


上記の手順で作成した.icaファイルは以下から取得できるので、参考にしてください。

https://calendar.google.com/calendar/embed?src=a20r4f6oav5tr5mi99cidt8mgk%40group.calendar.google.com&ctz=Asia%2FTokyo


最後に

今回はカンファレンスの講演スケジュールをGoogleカレンダーに落とし込む方法を紹介しました。

異なるフォーマットのデータをインポート可能な形式にすることで情報が統合でき、とても便利です。ぜひ参考にしてみてください!