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 レスポンスの内容

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.Freebusy freebusy = calendar.freebusy();
    FreeBusyRequest content = new FreeBusyRequest();
    content.setItems(Arrays.asList(new FreeBusyRequestItem().setId("カレンダーID")));
    content.setTimeMin(new DateTime(new SimpleDateFormat("yyyy-MM-dd").parse("2024-01-01")));
    content.setTimeMax(new DateTime(new SimpleDateFormat("yyyy-MM-dd").parse("2024-03-01")));
    Calendar.Freebusy.Query query = freebusy.query(content);
    
    FreeBusyResponse res = query.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

POST: https://www.googleapis.com/calendar/v3/freeBusy
が実行されます。

1.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.3. リクエストボディ

FreeBusyRequestのsetメソッドにより、リクエストボディを追加できます。

取得の開始時刻と終了時刻を指定しますが、この期間が3ヶ月を超えると
期間の指定が長すぎるという例外になるようです。

メソッド 引数 説明
setTimeMin DateTime 【必須】取得する空き時間の開始時刻
setTimeMax DateTime 【必須】取得する空き時間の終了時刻
setTimeZone String レスポンスで使用されるタイムゾーン
setGroupExpansionMax Integer カレンダーIDの最大数
最大値は100
setCalendarExpansionMax Integer FreeBusinessを提供するカレンダーの最大数
最大値は50
setItems List<FreeBusyRequestItem> クエリ対象のカレンダーやグループのリスト

FreeBusyRequestItem(set)

メソッド 引数 説明
setId String カレンダーIDまたはグループID

1.3. レスポンスの内容

FreeBusyResponse

メソッド 戻り値 説明
getKind String リソースの種類
固定文字列:"calendar#free"
getTimeMin DateTime 開始時刻
getTimeMax DateTime 終了時刻
getGroups Map<String,FreeBusyGroup> グループの拡張
getCalendars Map カレンダーの空き時間情報

FreeBusyGroup

メソッド 戻り値 説明
getErrors List<Error> 省略可能なエラー
getCalendars List<String> グループ内のカレンダーの識別子のリスト

FreeBusyCalendar

メソッド 戻り値 説明
getBusy List<TimePeriod> 予定ありとみなす期間のリスト

Error

メソッド 戻り値 説明
getDomain String エラーのドメインまたはカテゴリ
getReason String エラーの理由

TimePeriod

メソッド 戻り値 説明
getStart DateTime 期間の開始日
getEnd DateTime 期間の終了

エラーの理由

定義値 内容
groupTooBig リクエストされたユーザーグループのサイズが大きすぎる
tooManyCalendarsRequested リクエストされたカレンダーの数が1つのクエリには多すぎる
notFound リクエストされたリソースが見つからない
internalError API サービスで内部エラーが発生


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