Google Calendar API V3(Java)を使用して、
Googleカレンダーのアクセス制御ルール(ACL)を取得する方法
についてご紹介します。
カレンダーのアクセス制御ルール(ACL)とは
指定したユーザー、またはグループと予定の共有ができます。
UIでは、カレンダーの設定 -> [特定のユーザーまたはグループと共有する]
から設定できる内容です。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う
を参照ください。
No | 目次 | |
---|---|---|
1 | アクセス制御ルールを作成 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
2 | アクセス制御ルールを上書き | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
3 | アクセス制御ルールを更新 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 | |
4 | アクセス制御ルールを削除 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 |
1. アクセス制御ルールを作成
Googleカレンダーのアクセス制御ルールを作成します。
1.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
CalendarScopes.CALENDAR
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
Calendar calendar = getCalendar();
Calendar.Acl acl = calendar.acl();
AclRule content = new AclRule();
content.setRole("reader");
content.setScope(new Scope().setType("user").setValue("メールアドレス"));
Calendar.Acl.Insert insert = acl.insert("カレンダーID",content);
AclRule res = insert.execute();
System.out.println(res);
}
1.2.1. HTTPリクエスト
POST: https://www.googleapis.com/calendar/v3/calendars/{カレンダーID}/acl
が実行されます。
1.2.2. クエリパラメータ
Calendar.Acl.Insertのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setSendNotifications | Boolean | カレンダーの共有の変更に関する通知を送信するか |
1.2.3. リクエストボディ
AclRuleのsetメソッドにより、リクエストボディを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setRole | String | 【必須(作成・上書き)】 スコープに割り当てられたロール |
setScope | Scope | 【必須(作成・上書き)】 ACLルールによってカレンダーへのアクセスが許可される範囲 |
Scope(set)
メソッド | 戻り値 | 説明 |
---|---|---|
setType | String | 【必須(作成・上書き)】 スコープのタイプ |
setValue | String | ユーザーまたはグループのメールアドレス、またはドメインの名前 |
ロール
定義値 | 内容 |
---|---|
none | アクセスは許可されない |
freeBusyReader | 空き時間情報への読み取りアクセス権を付与 UI:[予定の表示(時間枠のみ、詳細は非表示)] |
reader | 読み取り権限を付与 UI:[予定の表示(すべての予定の詳細)] |
writer | 読み取りおよび書き込み権限を付与 UI:[予定の変更] |
owner | 所有権を提供 UI:[変更および共有の管理権限] |
スコープタイプ
定義値 | 内容 |
---|---|
default | パブリック スコープ |
user | 1人のユーザーに制限 |
group | グループに制限 |
domain | ドメインに制限 |
1.3. レスポンスの内容
AclRule
メソッド | 戻り値 | 説明 |
---|---|---|
getEtag | String | Eタグ |
getId | String | ACLルールID |
getKind | String | リソースの種類 固定文字列:"calendar#aclRule" |
getRole | String | スコープに割り当てられたロール |
getScope | Scope | ACLルールによってカレンダーへのアクセスが許可される範囲 |
Scope
メソッド | 戻り値 | 説明 |
---|---|---|
getType | String | スコープのタイプ |
getValue | String | ユーザーまたはグループのメールアドレス、またはドメインの名前 |
2. アクセス制御ルールを上書き
Googleカレンダーの指定したアクセス制御ルールを上書きします。
3. アクセス制御ルールを更新と違うところは、
指定した存在するアクセス制御ルールを新しいアクセス制御ルールに置き換えます。
アクセス制御ルールのID(ACLルールID)は、
1. アクセス制御ルールを作成(AclRule)のgetId()で取得した値を使います。
また、ScopeのsetTypeとsetValueは上書き前の値と同じにしなければなりません。
異なった場合は例外が発生します。
2.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
CalendarScopes.CALENDAR
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
2.2. 実行
public static void main(String[] args) throws Exception{
Calendar calendar = getCalendar();
Calendar.Acl acl = calendar.acl();
AclRule content = new AclRule();
content.setRole("reader");
content.setScope(new Scope().setType("user").setValue("ACLルールID"));
Calendar.Acl.Update update = acl.update("カレンダーID","ACLルールID",content);
AclRule res = update.execute();
System.out.println(res);
}
2.2.1. HTTPリクエスト
PUT: https://www.googleapis.com/calendar/v3/calendars/{カレンダーID}/acl/{ACLルールID}
が実行されます。
2.2.2. クエリパラメータ
Calendar.Acl.Updateのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setSendNotifications | Boolean | カレンダーの共有の変更に関する通知を送信するか |
2.2.3. リクエストボディ
AclRuleのsetメソッドにより、リクエストボディを追加できます。
1.2.3. リクエストボディ(AclRule)と同じです。
2.3. レスポンスの内容
AclRule
1.3. レスポンスの内容(AclRule)と同じです。
3. アクセス制御ルールを更新
Googleカレンダーの指定したアクセス制御ルールを更新します。
2. アクセス制御ルールを上書きと違うところは、
指定した存在するアクセス制御ルールを更新します。
アクセス制御ルールのID(ACLルールID)は、
1. アクセス制御ルールを作成(AclRule)のgetId()で取得した値を使います。
3.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
CalendarScopes.CALENDAR
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
3.2. 実行
public static void main(String[] args) throws Exception{
Calendar calendar = getCalendar();
Calendar.Acl acl = calendar.acl();
AclRule content = new AclRule();
content.setRole("reader");
Calendar.Acl.Patch patch = acl.patch("カレンダーID","ACLルールID",content);
AclRule res = patch.execute();
System.out.println(res);
}
3.2.1. HTTPリクエスト
PATCH: https://www.googleapis.com/calendar/v3/calendars/{カレンダーID}/acl/{ACLルールID}
が実行されます。
3.2.2. クエリパラメータ
Calendar.Acl.Patchのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setSendNotifications | Boolean | カレンダーの共有の変更に関する通知を送信するか |
3.2.3. リクエストボディ
AclRuleのsetメソッドにより、リクエストボディを追加できます。
1.2.3. リクエストボディ(AclRule)と同じです。
3.3. レスポンスの内容
AclRule
1.3. レスポンスの内容(AclRule)と同じです。
4. アクセス制御ルールを削除
Googleカレンダーの指定したアクセス制御ルールを削除します。
アクセス制御ルールのID(ACLルールID)は、
1. アクセス制御ルールを作成(AclRule)のgetId()で取得した値を使います。
4.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
CalendarScopes.CALENDAR
⧉[Google Calendar API(V3)] JavaでCalendar APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
4.2. 実行
public static void main(String[] args) throws Exception{
Calendar calendar = getCalendar();
Calendar.Acl acl = calendar.acl();
Calendar.Acl.Delete delete = acl.delete("カレンダーID","ACLルールID");
delete.execute();
}
4.2.1. HTTPリクエスト
DELETE: https://www.googleapis.com/calendar/v3/calendars/{カレンダーID}/acl/{ACLルールID}
が実行されます。
4.2.2. クエリパラメータ
クエリパラメータはありません。
4.2.3. リクエストボディ
リクエスボディはありません。
4.3. レスポンスの内容
レスポンスはありません。
削除に失敗した場合、例外が発生します。
おしまい。。