CalDAV は WebDAV の拡張機能であり、クライアントがリモート サーバー上のカレンダー情報にアクセスするための標準を提供します。
Google は、CalDAV プロトコルを使用してカレンダーを表示、管理できる CalDAV インターフェースを提供しています。
CalDAV API の割り当て上限は、Calendar API と同じです。詳細については、使用 上限をご覧ください。
仕様
関連する仕様ごとに、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をサポートします。free-busy-queryを除くすべてのレポートが実装されています。 - HTTP メソッド
MKCALENDARはサポートしていません。 AUDIOアクションはサポートしていません。
- HTTP メソッド
-
- CalDAV インターフェースで公開されるデータは、iCalendar 仕様に従ってフォーマットされます。
VTODOデータまたはVJOURNALデータはサポートしていません。- ユーザーが設定可能な URL プロパティを許可する Apple iCal 拡張機能はサポートしていません。
rfc6578: Collection Synchronization for WebDAV
- クライアント アプリケーションは、最初の同期後にこの動作モードに切り替える必要があります。
rfc6638: Scheduling Extensions to CalDAV
- 常に空の簡単な「受信トレイ」をサポートしています。
- 受信した招待状は、「受信トレイ」ではなく「予定」コレクションに自動的に配信されます。
free-busyルックアップはサポートしていません。
caldav-ctag-02: Calendar Collection Entity Tag (CTag) in CalDAV
- カレンダーの
ctagはリソースのetagに似ています。カレンダーの内容が変更されると変更されます。これにより、クライアント アプリケーションは、変更された予定を同期する必要がないことを迅速に判断できます。
- カレンダーの
calendar-proxy: Calendar User Proxy Functionality in CalDAV
- カレンダーの同期パフォーマンスを向上させるため、
calendar-proxy-read-forプロパティまたはcalendar-proxy-write-forプロパティを含むリクエストは、iOS デバイスが委任をサポートしていないため、iOS UserAgent で失敗します。
- カレンダーの同期パフォーマンスを向上させるため、
CalDAV の実装はすべての仕様を網羅しているわけではありませんが、Apple カレンダーなど、多くのクライアントで正しく動作します。
クライアント ID を作成する
CalDAV API を使用するには、Google アカウントが必要です。
CalDAV API にリクエストを送信する前に、プロジェクトを作成して Google Cloud コンソールにクライアントを登録する必要があります。
Google API Console に移動します。[**プロジェクトを作成**] をクリックし、 名前を入力して、[**作成**] をクリックします。
次に、CalDAV API を有効にする必要があります。
プロジェクトで API を有効にする手順は、次のとおりです。
- Google API Console で API ライブラリを開きます。プロンプトが表示されたら、既存のプロジェクトのいずれかを選択するか、新しいプロジェクトを作成します。API ライブラリには、利用できるすべての API がプロダクト ファミリーと人気度によって分類され、表示されます。
- 有効にする API がリストで見当たらない場合は、検索して見つけます。
- 有効にする API を選択し、[有効にする] ボタンをクリックします。
- プロンプトが表示されたら、請求機能を有効にします。
- プロンプトが表示されたら、API の利用規約に同意します。
CalDAV API リクエストを実行するには、クライアント ID とクライアント シークレット が必要です。
プロジェクトのクライアント 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/CALENDAR_ID/user
CALENDAR_ID は、アクセスするカレンダーの ID に置き換えます。
ウェブ インターフェースでカレンダー ID を確認するには、カレンダー名の横にあるプルダウン メニューで [**カレンダーの設定**] を選択します。カレンダー ID は、[カレンダーのアドレス] というセクションに表示されます。ユーザーのメイン カレンダーのカレンダー ID は、そのユーザーのメールアドレスと同じです。
クライアント プログラム(Mozilla Thunderbird など)でカレンダー コレクションを開始点として使用する必要がある場合は、次の URI を使用します。
https://apidata.googleusercontent.com/caldav/v2/CALENDAR_ID/events