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