1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[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 実行
3 レスポンスの内容
2 パーミッションの情報を取得
1 スコープ
2 実行
3 レスポンスの内容

1. パーミッションリストを取得

1.1. スコープ

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

DriveScopes.DRIVE
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_METADATA
DriveScopes.DRIVE_METADATA_READONLY
DriveScopes.DRIVE_PHOTOS_READONLY
DriveScopes.DRIVE_READONLY

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

1.2. 実行

APIを実行します。
パーミッションリストは一度に最大100件まで取得できます。

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

レスポンスのgetNextPageTokenがNULLではない場合、
全てのリストが取得できていません。
クエリパラメータのsetPageTokenに取得できた値を設定し、
再度APIを実行します。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Permissions permissions = drive.permissions();
    
    Drive.Permissions.List list = permissions.list("ファイルID");
    list.setFields("*");
    
//レスポンスのgetNextPageTokenがNULLではない場合
//list.setPageToken("レスポンスのgetNextPageToken");

	PermissionList res = list.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

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

1.2.2. クエリパラメータ

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

メソッド 引数 説明
setPageSize Integer ページごとに返されるファイルの最大数
setPageToken String 次のページで前のリスト要求を継続するためのトークン
レスポンスのgetNextPageTokenで取得が可能
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか
setUseDomainAdminAccess Boolean ドメイン管理者としてリクエストを発行するか

1.3. レスポンスの内容

PermissionList

フィールド メソッド 戻り値 説明
nextPageToken getNextPageToken String 次のページのページトークン
リストの最後の場合はNULL
kind getKind String リソースの種類
固定文字列:"drive#fileList"
permissions getPermissions List<Permission> パーミッションのリスト

2. パーミッションの情報を取得

2.1. スコープ

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

DriveScopes.DRIVE
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_METADATA
DriveScopes.DRIVE_METADATA_READONLY
DriveScopes.DRIVE_PHOTOS_READONLY
DriveScopes.DRIVE_READONLY

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

2.2. 実行

パーミッションを取得したいファイルIDとパーミッションIDを指定します。

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

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Permissions permissions = drive.permissions();
    
    Drive.Permissions.Get get = permissions.get("ファイルID", "パーミッションID");
    get.setFields("*");
    
    Permission res = get.execute();
    System.out.println(res);
}

2.2.1. HTTPリクエスト

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

2.2.2. クエリパラメータ

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

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

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 パーミッションが継承されるかどうか

アクセス権の付与タイプ

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

役割

許可された操作 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


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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?