0
1

[Google Calendar API(V3)] Javaでアクセス制御ルール(ACL)を作成・更新・削除する

Posted at

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

レスポンスはありません。
削除に失敗した場合、例外が発生します。



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