0
1

[Google Calendar API(V3)] Javaでカレンダーの変更を監視する

Posted at

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


おしまい。。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1