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