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_READONLY
CalendarScopes.CALENDAR
CalendarScopes.CALENDAR_EVENTS_READONLY
CalendarScopes.CALENDAR_EVENTS
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う(2.2 Calendarインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Calendar calendar = getCalendar();
Calendar.Events events = calendar.events();
Channel content = new Channel();
content.setId("チャンネルを識別するUUID");
content.setType("web_hook");
content.setAddress("変更通知が配信されるURL");
Calendar.Events.Watch watch = events.watch("カレンダーID", content);
Channel res = watch.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://www.googleapis.com/calendar/v3/calendars/{カレンダーID}/events/watch
が実行されます。
1.2.2. クエリパラメータ
Calendar.Events.Watchのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setEventTypes | String | 監視するリソースのイベントタイプ |
イベントタイプ
定義値 | 内容 |
---|---|
default | 定期的なイベント |
focusTime | サイレント モードの予定 |
outOfOffice | 不在の予定 |
workingLocation | 勤務場所の予定 |
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 | 通知チャネルのこのメッセージを識別する整数 | 33666 |
x-goog-resource-id | チャンネルで監視するリソースを識別するID | uJ4NMuP6FGdkXqK0OPjligffaUc |
x-goog-resource-state | 通知をトリガーした新しいリソースの状態 sync,exists,not_exists |
exists |
x-goog-resource-uri | 監視対象リソースの API バージョン固有の識別子 | https://www.googleapis.com/calendar/v3/calendars/xxxxxxxx/events?alt=json |
おしまい。。