2022/04/13

SalesforceにおけるiCalendarとは?iCalendarの特徴や主要なコードについて解説

 
  

SalesforceにおけるiCalendarとは?

「iCalendar」とは、スケジュール情報を異なるアプリ間でも読み込ませることができるようにするためのフォーマットです。 また、このフォーマットというのはIETF(The Internet Engineering Task Force)という「インターネットに関わる技術の規定を決めている組織」が定めたもので、iCalendarは「RFC 5545」(旧版はRFC 2445)として、規定が記載されています。 昨今、様々なスケジュール管理アプリが存在していますが、このフォーマットに従ってスケジュール情報を出力することで、異なるアプリ間でも同じ内容のスケジュール情報を登録したり、移行したり、他者に共有することができます。 Salesforceでも同様に、このiCalendarの形式を用いてスケジュールデータの入出力ができるようになると、外部のスケジュールアプリとの連携が可能になります。

SalesforceにおけるiCalendarの特徴

スケジュール情報をiCalendar形式で出力した場合、次のような特徴を持ちます。 ・拡張子は「.ics」 ・ファイルの中身はプレーンテキスト(メモ帳などで開くことができ、ファイルの中身を確認できる) ・MIMEタイプが「text/calendar」 ・文字コードが「UTF-8」 ・改行コードは「CRLF(\r\n)」 iCalendar形式のファイルは上記のような特徴を持っているので、この特徴に当てはまったデータを見つけた際はiCalendar形式のファイルであると認識できるようにしましょう。 続いて、ファイルの中身について説明します。例えば、「2021年 2月10日 17:00~18:00 会議」といったスケジュールを「Google カレンダー」に登録していた場合、これをiCalendar形式でデータを出力すると、ファイルの中身は次のようになります。
BEGIN:VCALENDAR
PRODID:-//Google Inc//Google Calendar 70.9054//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:sample@example.com
X-WR-TIMEZONE:Asia/Tokyo
BEGIN:VEVENT
DTSTART:20210210T170000Z
DTEND:20210210T180000Z
DTSTAMP:20210210T190000Z
UID:XXXXXXXXXXXXXXXXX@google.com
CREATED:20210210T150000Z
DESCRIPTION:
LAST-MODIFIED:20210210T160000Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:会議
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
このように、iCalendar形式で出力したファイルの中身は、スケジュール情報が特定のルールに基づいたコードとして記載されます。「BEGIN:VCALENDAR」から始まるのが特徴です。

主要なコードについての解説

iCalendarではデータ内に様々な項目が存在しますが、その中でもSalesforceでも扱う可能性のある、主要な部分を抜粋し説明します。各コードには下記のような意味があります。 VCALENDAR
BEGIN:VCALENDAR
・・・
END:VCALENDAR
iCalendar形式のファイルは必ず、文頭に「BEGIN:VCALENDAR」、文末に「END:VCALENDAR」と記載されます。iCalendar形式のデータの始まりと終わりを表し、この「BEGIN:VCALENDAR」から「END:VCALENDAR」間に詳細なスケジュール情報が含まれます。 PRODID
PRODID:-//企業名//製品名とバージョン//一意であることが保証されているテキスト
「PRODID:」に続く部分には、このiCalendar形式のデータ出力した企業名と製品の識別子が入ります。例えばGoogle カレンダーに登録したスケジュールをiCalendar形式で出力した場合は「PRODID:-//Google Inc//Google Calendar 70.9054//EN」といった内容になります。 VERSION
VERSION:バージョン数値
「VERSION:」に続く部分には、出力する際に使用されたiCalendarのバージョン数値が入ります。また、このiCalendar形式のファイルを読み込む際に「iCalendarのどのバージョンで解釈する必要があるか」をアプリ側が判別する指標にもなります。 CALSCALE
CALSCALE:GREGORIAN
「CALSCALE:」に続く部分には、どの暦法に基づいたスケジュールかを表す文字が入ります。グレゴリオ暦の場合は「GREGORIAN」と記載されます。また、指定しなかった場合でも、デフォルトでグレゴリオ暦と認識されます。 METHOD
METHOD:メソッド名
「METHOD:」に続く部分には、「RFC 2446」で定義されるメソッド名が入ります。iCalendar形式のデータをアプリ間でやり取りする際に、どのメソッドを用いるかここで判別します。 VEVENT
BEGIN:VEVENT
・・・
END:VEVENT
「BEGIN:VEVENT」から「END:VEVENT」間に1予定分の情報が含まれることを表します。例えば、スケジュールアプリに2件予定を登録していた場合、それをiCalendar形式で出力すると、このVEVENTで挟まれたデータのまとまりが2つできます。 DTSTART, DTEND
DTSTART:予定の開始日時
DTEND:予定の終了日時
「DTSTART」「DTEND」はVEVENT内に書かれる項目で、予定の「開始日時」と「終了日時」を表します。UTC時間形式で表記されます。 例えば「2021年2月10日 17:00~18:00」の予定であった場合は「DTSTART:20210210T170000Z」「DTEND:20210210T180000Z」となります。 また、祝日や記念日といった終日の予定は、下記のように表記されます。
DTSTART;VALUE=DATE:予定の開始年月日
DTEND;VALUE=DATE:予定の終了年月日
例えば「2021年3月1日~2021年3月31日」の予定であった場合は「DTSTART;VALUE=DATE:20210301」「DTEND;VALUE=DATE:20210331」となります。 その他にも「;TZID=Asia/Tokyo」という方式で、タイムゾーンを設定することもできます。 DTSTAMP
DTSTAMP:予定をiCalendarデータに変換した日時
「DTSTAMP」はVEVENT内に書かれる項目で、予定をiCalendar形式で出力した際の日時、または最終改変日時が表示されます。 UID
UID:予定を識別するID
「UID:」はVEVENT内に書かれる項目で、予定を識別するためのIDが記載されます。複数予定がある場合でも識別できるよう、ユニークな値である必要があります。 「RFC 5545」では、ユニークなIDの決め方として「予定の日時@IDを発行したホスト(アプリ)のドメイン名」を例として挙げています。 CREATED
CREATED:予定の作成日時
「CREATED:」はVEVENT内に書かれる項目で、予定が作成された日時を示します。UTC時間形式で表記されます。 DESCRIPTION
DESCRIPTION:予定の詳細
「DESCRIPTION:」はVEVENT内に書かれる項目で、予定の詳細がここに記載されます。詳細内で文字の改行を行う場合は「\n」と表記します。 LAST-MODIFIED
LAST-MODIFIED:予定の修正日時
「LAST-MODIFIED:」はVEVENT内に書かれる項目で、予定が修正された日時を示します。UTC時間形式で表記されます。 LOCATION
LOCATION:開催場所
「LOCATION:」はVEVENT内に書かれる項目で、予定の開催場所の情報を記載します。具体的な開催場所名や、URLを入れることも可能です。 SEQUENCE
SEQUENCE:0以上の数字
「SEQUENCE:」はVEVENT内に書かれる項目で、この予定の修正回数を表します。初回登録時は0が入り、登録者によって予定情報の改変が行われる度に数字が1ずつ加算されます。 STATUS
STATUS:TENTATICE, CONFIRMED, CANCELED など
「STATUS:」はVEVENT内に書かれる項目で、予定の状態を示します。状態は主に3種類存在し、「TENTATIVE:開催が仮状態の予定」「CONFIRMED:開催が確定した予定」「CANCELLED:キャンセルされた予定」を表します。 SUMMARY
SUMMARY:予定の概要やタイトル
「SUMMARY:」はVEVENT内に書かれる項目で、予定の概要やタイトルがここに記載されます。

その他のコード

その他にも、下記のような「X-」から始まるコードが含まれる場合があります。
X-WR-CALNAME:sample@example.com
X-WR-TIMEZONE:Asia/Tokyo
これはiCalendarの標準項目以外のコードになり、各アプリでiCalendarファイル内に独自の項目を持ちたい場合に「X-任意の名称」として記載されていることがあります。

SalesforceでiCalendarを活用しよう!

今回はSalesforceのカレンダーで主に使われる「iCalendar」について紹介しました。 外部アプリからスケジュールをSalesforceへ取り込む際や、スケジュールを扱うカスタムアプリケーションを作る場合は、iCalendar形式でデータの入出力ができるようになると、Salesforceの利便性が高まります。是非活用できるようにしましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】