0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2024-04-10

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


おしまい。。
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?