Google Calendar API V3(Java)を使用して、
Googleカレンダーの変更を監視する方法
についてご紹介します。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う
を参照ください。
No | 目次 | |
---|---|---|
1 | カレンダーの変更を監視 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
2 | カレンダーの監視を停止 | |
3 | 変更通知を受信 |
1. カレンダーの変更を監視
Googleカレンダーの変更を監視します。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
CalendarScopes.CALENDAR
CalendarScopes.CALENDAR_READONLY
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Calendar calendar = getCalendar();
Calendar.CalendarList calendarList = calendar.calendarList();
Channel content = new Channel();
content.setId("チャンネルを識別するUUID");
content.setType("web_hook");
content.setAddress("変更通知が配信されるURL");
Calendar.CalendarList.Watch watch = calendarList.watch(content);
Channel res = watch.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST https://www.googleapis.com/calendar/v3/users/me/calendarList/watch
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.2.3. リクエストボディ
Channelのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setId | String | 【必須】チャンネルを識別するUUID |
setAddress | String | 【必須】変更通知が配信されるURL |
setType | String | 【必須】このチャンネルで使用される配信方法の種類 "web_hook"(または"webhook")のみ |
setToken | String | このチャンネル経由で通知と一緒に対象のアドレスに配布される任意の文字列 |
setParams | Map<String,String> | 配信チャンネルの操作を制御する追加のパラメータ |
setExpiration | Long | 通知チャンネルの有効期間(秒) |
1.3. レスポンスの内容
Channel
メソッド | 戻り値 | 説明 |
---|---|---|
getKind | String | リソースの種類 固定文字列:"api#channel" |
getId | String | このチャンネルを識別するUUID |
getResourceId | String | このチャンネルで監視するリソースを識別するID |
getResourceUri | String | 監視対象のリソースのバージョン固有のID |
getToken | String | このチャンネル経由で通知と一緒に対象のアドレスに配布される任意の文字列 |
getExpiration | long | 通知チャンネルの有効期限 |
2. カレンダーの監視を停止
Googleカレンダーの監視を停止します。
変更通知の停止は、
⧉[Google Calendar API(V3)] Javaで変更通知を停止する
の記事を参照ください。
3. 変更通知を受信
カレンダーの変更があった場合、登録したURLへPOSTされます。
HTTPヘッダーの「x-goog」から始まるヘッダーの内容で確認できます。
ヘッダ | 内容 | 例 |
---|---|---|
x-goog-channel-expiration | 通知チャネルの有効期限 | Tue, 02 Apr 2024 03:29:03 GMT |
x-goog-channel-id | チャンネルを識別するUUID | test |
x-goog-message-number | 通知チャネルのこのメッセージを識別する整数 | 61371 |
x-goog-resource-id | チャンネルで監視するリソースを識別するID | V0h2iEZpuFWTY1Y2BPmYPm3hnsg |
x-goog-resource-state | 通知をトリガーした新しいリソースの状態 sync,exists,not_exists |
exists |
x-goog-resource-uri | 監視対象リソースの API バージョン固有の識別子 | https://www.googleapis.com/calendar/v3/users/me/calendarList?alt=json |
おしまい。。