CalDAV は WebDAV の拡張機能であり、クライアントがリモート サーバー上のカレンダー情報にアクセスするための標準を提供します。
Google は、CalDAV プロトコルを使用してカレンダーを表示、管理できる CalDAV インターフェースを提供しています。
仕様
関連する仕様ごとに、Google の CalDAV のサポートは次のとおりです。
- rfc4918: HTTP Extensions for Web Distributed Authoring and Versioning
(WebDAV)
- 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: Collection Synchronization for WebDAV
- クライアント アプリケーションは、最初の同期後にこのオペレーション モードに切り替える必要があります。
- rfc6638: Scheduling Extensions to CalDAV
- 常に空の簡単な「受信トレイ」をサポートしています。
- 受信した招待状は、「受信トレイ」ではなく「予定」コレクションに自動的に配信されます。
- 空き時間情報の検索はサポートしていません。
- caldav-ctag-02: Calendar Collection Entity Tag (CTag) in CalDAV
- カレンダーの
ctagはリソースのetagのようなもので、カレンダー内の何かが変更されると変更されます。これにより、クライアント アプリケーションは、変更された予定を同期する必要がないことを迅速に判断できます。
- カレンダーの
- calendar-proxy: Calendar User Proxy Functionality in 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 Console で 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/valid/user
valid は、アクセスするカレンダーの「カレンダー ID」に置き換える必要があります。これは、Google カレンダーのウェブ インターフェースで、カレンダー名の横にあるプルダウン メニューから [カレンダーの設定] を選択すると確認できます。表示されたページの [カレンダーのアドレス] というセクションにカレンダー ID が表示されます。ユーザーのメイン カレンダーのカレンダー ID は、そのユーザーのメールアドレスと同じです。
クライアント プログラム( Mozilla Sunbird など)で カレンダー コレクションを開始点として使用する必要がある場合、接続先の URI は次のようになります。
https://apidata.googleusercontent.com/caldav/v2/valid/events
古いエンドポイント https://www.google.com/calendar/dav は非推奨となり、サポートされなくなりました。自己責任で使用してください。 上記で説明した新しいエンドポイント形式に移行することをおすすめします。
iCal® は Apple Inc. の商標です。