LoginSignup
1
0

[Google Drive API v3] Javaでファイルのパーミッションを付与・更新・削除する

Posted at

Google Drive API v3(Java)を使用して、
Driveに置かれているファイルのパーミッションを付与・更新・削除する方法
についてご紹介します。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Drive API v3] JavaでDrive APIを使う
を参照ください。

No 目次
1 パーミッションの付与タイプと役割(ロール)
1 アクセス権の付与タイプ
2 役割(ロール)
2 パーミッションを付与
1 スコープ
2 実行
3 レスポンスの内容
3 パーミッションを更新
1 スコープ
2 実行
3 レスポンスの内容
4 パーミッションを削除
1 スコープ
2 実行
3 レスポンスの内容

1. パーミッションの付与タイプと役割(ロール)

1.1. アクセス権の付与タイプ

タイプ 内容
user 単一のユーザーにアクセス許可を付与
group グループにアクセス許可を付与
domain ドメインにアクセス許可を付与
anyone 会社ドメインへのアクセス権を持つ人物にアクセス許可を付与

1.2. 役割(ロール)

許可された操作 owner organizer fileOrganizer writer commenter reader
ファイルまたはフォルダーのメタデータ (名前、説明など) を読み取ります。 o o o o o o
ファイルの内容を読む o o o o o o
フォルダー内のアイテムのリストを読む o o o o o o
ファイルにコメントを追加する o o o o o x
ファイルまたはフォルダーのメタデータを変更する o o o o x x
ファイルの内容を変更する o o o o x x
過去のリビジョンにアクセスする o o o o x x
フォルダーにアイテムを追加する o o o o x x
「マイドライブ」フォルダからアイテムを削除する o x x o x x
「マイドライブ」フォルダーのアイテムを共有する o x x o x x
共有ドライブアイテムを共有する x o o o x x
共有ドライブにファイルを追加する x o o o x x
共有ドライブのメタデータを変更する x o x x x x
共有ドライブのメンバーを追加する x o x x x x
詳細なファイル権限にアクセスできます o o o o x x
共有ドライブ内のアイテムを再編成する x o o x x x
アイテムを共有ドライブの外に移動する x o x x x x
アイテムをゴミ箱に移動する o o o x x x
ゴミ箱からアイテムを回収する o o o x x x
ゴミ箱を空にする o o x x x x
ファイルまたはフォルダーを削除する o o x x x x
共有ドライブ内のアイテムを削除する x o x x x x
空の共有ドライブを削除する x o x x x x
マイドライブフォルダー内のファイルにコンテンツ制限を追加する o x x o x x
共有ドライブ内のファイルにコンテンツ制限を追加する x o o o x x

2. パーミッションを付与

2.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_FILE

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

2.2. 実行

APIを実行します。

パーミッションを付与したいファイルに、
・メールアドレス
アクセス権の付与タイプ
役割(ロール)
を設定します。
そのほかの設定は、2.2.3. リクエストボディを参照ください。

setFieldsでレンスポンスで取得したいフィールド(Permission)を指定できます。
指定しない場合は、必要最小限のレスポンスしか返ってきません。
ここでは「*」(全て取得)を指定しています。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Permissions permissions = drive.permissions();
    
    Permission permission = new Permission();
    permission.setEmailAddress("xxxxx@gmail.com");
    permission.setType("user");
    permission.setRole("reader");
    
    Drive.Permissions.Create create = permissions.create("ファイルID", permission);
    create.setEmailMessage("権限を付与しました");
    create.setFields("*");
    
    Permission res = create.execute();
    System.out.println(res);
}

2.2.1. HTTPリクエスト

POST: https://www.googleapis.com/drive/v3/files/{ファイルID}/permissions
が実行されます。

2.2.2. クエリパラメータ

Drive.Permissions.Createのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setEmailMessage String 通知メールに含めるプレーン テキストのカスタムメッセージ
setMoveToNewOwnersRoot Boolean 親を変更するか
アイテムが共有ドライブになくリクエストがアイテムの所有権を譲渡しようとしている場合のみ
setSendNotificationEmail Boolean ユーザーまたはグループに共有するときに通知メールを送信するかどうか
デフォルトはture
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか
setTransferOwnership Boolean 所有権を指定したユーザーに譲渡し、現在の所有者をライターにダウングレードするか
setUseDomainAdminAccess Boolean ドメイン管理者としてリクエストを発行するか

2.2.3. リクエストボディ

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

メソッド 引数 説明
setType String アクセス権の付与タイプ
setEmailAddress String このパーミッションが参照するユーザーまたはグループの電子メールアドレス
setRole String このパーミッションによって付与される役割
setAllowFileDiscovery Boolean 検索によるファイルの検出を許可するパーミッションかどうか。
typeがdomain、anyoneの場合のみ
setDomain String このパーミッションが参照するドメイン
setExpirationTime DateTime このパーミッションが期限切れになる時刻
typeがuser、groupの場合のみ
setPendingOwner Boolean このパーミッションに関連付けられたアカウントが保留中の所有者であるか
typeがuserで、共有ドライブにないファイルのタイプのパーミッションのみ

DateTime

メソッド 引数 説明
setValue long unixミリ秒
setTimeZoneShift int UTCからの分数で表されるタイムゾーン

2.3. レスポンスの内容

Permission

フィールド メソッド 戻り値 説明
id getId String パーミッションID
type getType String 被付与者のタイプ
displayName getDisplayName String パーミッション名
kind getKind String リソースの識別名
固定文字列:"drive#permission"
permissionDetails getPermissionDetails List<Permission.PermissionDetails> アクセス許可の継承についての詳細
共有ドライブのみ
photoLink getPhotoLink String ユーザーのプロフィール写真へのリンク
emailAddress getEmailAddress String 参照するユーザーまたはグループの電子メールアドレス
role getRole String 付与される役割
allowFileDiscovery getAllowFileDiscovery Boolean 検索によるファイルの検出を許可するパーミッションか
typeがanyoneの場合のみ
domain getDomain String パーミッションが参照するドメイン
expirationTime getExpirationTime String 期限切れになる時刻
deleted getDeleted Boolean 関連付けられたアカウントが削除されているか
typeがuser、groupの場合のみ
view getView String パーミッションのビュー(publishedのみ)
pendingOwner getPendingOwner Boolean 関連付けられたアカウントが保留中の所有者であるか

Permission.PermissionDetails

メソッド 戻り値 説明
getPermissionType String パーミッションのタイプ
file、member
getInheritedFrom String 継承元となるアイテムのID
getRole String 主な役割
getInherited Boolean パーミッションが継承されるかどうか

3. パーミッションを更新

3.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_FILE

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

3.2. 実行

APIを実行します。
変更したいファイルのファイルIDとパーミッションIDを指定します。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Permissions permissions = drive.permissions();
    
    permission.setEmailAddress("xxxx@gmail.com");
    permission.setType("user");
    permission.setRole("reader");
    
    Drive.Permissions.Update update = permissions.update("ファイルID", "パーミッションID", permission);
    
    Permission res = update.execute();
    System.out.println(res);
}

3.2.1. HTTPリクエスト

PATCH: https://www.googleapis.com/drive/v3/files/{ファイルID}/permissions/{パーミッションID}
が実行されます。

3.2.2. クエリパラメータ

Drive.Permissions.Getのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setRemoveExpiration Boolean 有効期限を削除するか
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか
setTransferOwnership Boolean 所有権を指定したユーザーに譲渡し、現在の所有者をライターにダウングレードするか
setUseDomainAdminAccess Boolean ドメイン管理者としてリクエストを発行するか

3.2.3. リクエストボディ

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

2.2.3. リクエストボディと同じです。

3.3. レスポンスの内容

Permission

2.3. レスポンスの内容と同じです。

4. パーミッションを削除

4.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_FILE

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

4.2. 実行

APIを実行します。
削除したいパーミッションのファイルIDとパーミッションIDを指定します。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Permissions permissions = drive.permissions();

	Drive.Permissions.Delete delete = permissions.delete("ファイルID", "パーミッションID");
		
	delete.execute();
}

4.2.1. HTTPリクエスト

DELETE: https://www.googleapis.com/drive/v3/files/{ファイルID}/permissions/{パーミッションID}
が実行されます。

4.2.2. クエリパラメータ

Drive.Permissions.Deleteのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか
setUseDomainAdminAccess Boolean ドメイン管理者としてリクエストを発行するか

4.3. レスポンスの内容

成功した場合は何も返しません。
失敗した場合は例外を出力します。



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