CalDAV は WebDAV の拡張機能であり、クライアントがリモート サーバー上のカレンダー情報にアクセスするための標準を提供します。
Google は、CalDAV プロトコルを使用してカレンダーを表示および管理するために使用できる CalDAV インターフェースを提供しています。
仕様
関連する各仕様に対する Google の CalDAV サポートは次のとおりです。
- rfc4918: Web 分散オーサリングとバージョン管理(WebDAV)の HTTP 拡張機能
- HTTP メソッド
GET
、PUT
、HEAD
、DELETE
、POST
、OPTIONS
、PROPFIND
、PROPPATCH
をサポートします。 - HTTP メソッド
LOCK
、UNLOCK
、COPY
、MOVE
、MKCOL
、またはIf*
ヘッダー(If-Match
を除く)をサポートしていません。 - 任意の(ユーザー定義の)WebDAV プロパティはサポートされていません。
- WebDAV アクセス制御(rfc3744)をサポートしていません。
- HTTP メソッド
- rfc4791: Calendaring Extensions to WebDAV (CalDAV)
- HTTP メソッド
REPORT
をサポートしています。空き時間情報のクエリを除くすべてのレポートが実装されています。 - HTTP メソッド
MKCALENDAR
をサポートしていません。 AUDIO
アクションをサポートしていません。
- HTTP メソッド
- rfc5545: iCalendar
- CalDAV インターフェースで公開されるデータは、iCalendar 仕様に従ってフォーマットされます。
- 現在、
VTODO
またはVJOURNAL
のデータはサポートされていません。 - ユーザーが設定可能な URL プロパティを許可する Apple iCal® 拡張機能はサポートされていません。
- rfc6578: WebDAV のコレクション同期
- クライアント アプリケーションは、初回同期後にこの動作モードに切り替える必要があります。
- rfc6638: Scheduling Extensions to CalDAV
- 常に空の簡単な「受信トレイ」をサポートします。
- 受信した招待状は、[受信トレイ] ではなく [予定] コレクションに自動的に配信されます。
- 空き時間情報の検索をサポートしていません。
- caldav-ctag-02: CalDAV のカレンダー コレクション エンティティ タグ(CTag)
- カレンダー
ctag
はリソースetag
のようなもので、カレンダー内の内容が変更されると変更されます。これにより、クライアント アプリケーションは、変更されたイベントを同期する必要がないことをすばやく判断できます。
- カレンダー
- calendar-proxy: CalDAV のカレンダー ユーザー プロキシ機能
- 委任をサポートしていない iOS デバイスからのカレンダー同期のパフォーマンスを改善するため、iOS UserAgent で
calendar-proxy-read-for
プロパティまたはcalendar-proxy-write-for
プロパティを使用すると失敗します。
- 委任をサポートしていない iOS デバイスからのカレンダー同期のパフォーマンスを改善するため、iOS UserAgent で
関連するすべての仕様の完全な実装はまだ提供されていません。ただし、Apple のカレンダー アプリなど、多くのクライアントでは CalDAV プロトコルが正しく動作します。
注: アカウントのセキュリティを確保し、不正使用を防ぐため、Google は CalDAV 経由でデータにアクセスするクライアント アプリケーションに Cookie を設定する場合があります。
クライアント ID の作成
CalDAV API を使用するには、Google アカウントが必要です。使用できるアカウントをすでにお持ちの場合は、準備が整っています。
CalDAV API にリクエストを送信する前に、プロジェクトを作成して、Google API Console にクライアントを登録する必要があります。
Google API Console に移動します。[プロジェクトを作成] をクリックし、名前を入力して、[作成] をクリックします。
次のステップは、CalDAV API を有効にすることです。プロジェクトで API を有効にする手順は、次のとおりです。
- Google API コンソールで API ライブラリを開きます。プロンプトが表示されたら、既存のプロジェクトのいずれかを選択するか、新しいプロジェクトを作成します。API ライブラリには、利用できるすべての API がプロダクト ファミリーと人気度によって分類され、表示されます。
- 有効にする API がリストで見当たらない場合は、検索して見つけます。
- 有効にする API を選択し、[有効にする] ボタンをクリックします。
- プロンプトが表示されたら、請求機能を有効にします。
- プロンプトが表示されたら、API の利用規約に同意します。
プロジェクトのクライアント ID とクライアント シークレットを検索するには、次の手順を実行します。
- 既存の OAuth 2.0 認証情報を選択するか、[認証情報] ページを開きます。
- まだ OAuth 2.0 の認証情報を作成していない場合は、[認証情報を作成] > [OAuth クライアント ID] の順にクリックし、認証情報の作成に必要な情報を入力して、プロジェクトの認証情報を作成します。
- [OAuth 2.0 クライアント ID] セクションで、クライアント ID を探します。詳細を表示するには、クライアント ID をクリックします。
Google の CalDAV サーバーに接続する
CalDAV インターフェースを使用するには、クライアント プログラムが最初に 2 つの開始点のいずれかでカレンダー サーバーに接続します。いずれの場合も、接続は HTTPS 経由で行う必要があり、OAuth 2.0 認証スキームを使用する必要があります。CalDAV サーバーは、Google アカウントの OAuth 2.0 認証による HTTPS 経由でリクエストが届かない限り、リクエストの認証を拒否します。HTTP 経由で接続しようとした場合や、基本認証を使用しようとした場合は、HTTP 401 Unauthorized
ステータス コードが返されます。
クライアント プログラム(Apple のカレンダー アプリなど)でプリンシパル コレクションを起点とする必要がある場合、接続する URI は次のようになります。
https://apidata.googleusercontent.com/caldav/v2/calid/user
ここで、calid
はアクセスするカレンダーの「カレンダー ID」に置き換えます。この ID は、Google カレンダーのウェブ インターフェースで、カレンダー名の横にあるプルダウン メニューから [カレンダーの設定] を選択すると確認できます。表示されたページの [カレンダーのアドレス] というセクションにカレンダー ID が表示されます。ユーザーのメイン カレンダーの ID は、そのユーザーのメールアドレスと同じです。
クライアント プログラム(Mozilla Sunbird など)でカレンダー コレクションを起点とする必要がある場合、接続先の URI は次のようになります。
https://apidata.googleusercontent.com/caldav/v2/calid/events
古いエンドポイント https://www.google.com/calendar/dav は非推奨となり、サポートされなくなりました。ご自身の責任において使用してください。上記の新しいエンドポイント形式に移行することをおすすめします。
iCal® は Apple Inc. の商標です。