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 サービスで内部エラーが発生 |
おしまい。。