LoginSignup
1
0

[Google Drive API v3] Javaで共有ドライブの情報を取得する

Last updated at Posted at 2024-03-11

Google Drive API v3(Java)を使用して、
共有ドライブの情報を取得する方法
についてご紹介します。

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_READONLY

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

1.2. 実行

APIを実行します。

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

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

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Drives drives = drive.drives();
    
    Drive.Drives.List list = drives.list();
    list.setFields("*");

//レスポンスのgetNextPageTokenがNULLではない場合
//list.setPageToken("レスポンスのgetNextPageToken");

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

1.2.1. HTTPリクエスト

GET: https://www.googleapis.com/drive/v3/drives
が実行されます。

1.2.2. クエリパラメータ

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

フィールド メソッド 引数 説明
pageSize setPageSize Integer ページごとに返されるファイルの最大数
指定なしだと100件、指定しても最大 100件
pageToken setPageToken String 次のページで前のリスト要求を継続するためのトークン
レスポンスのgetNextPageTokenで取得が可能
q setQ String 共有ドライブを検索するためのクエリ文字列
useDomainAdminAccess setUseDomainAdminAccess Boolean ドメイン管理者としてリクエストを発行するか

共有ドライブを検索するためのクエリ文字列

表の「文字」がoの場合は、シングルクォート(')で囲む必要があります。

表の「管理者権限」が必要の場合は、
クエリパラメータのsetUseDomainAdminAccessをtrueにする必要があります。

例えば、名前がABCで、メンバーの数が3人以上を検索する場合
name = 'ABC' and memberCount>=3
と指定します。

用語 使用可能な演算子 内容 文字 管理者権限
createdTime <=, <, =, !=, >, >= 共有ドライブが作成された日付 o 必要
hidden =, != 共有ドライブを非表示にするかどうか(true or false) x
memberCount <=, <, =, !=, >, >= 共有ドライブのメンバーであるユーザーとグループの数 x 必要
name contains, =, != 共有ドライブの名前 o
organizerCount <=, <, =, !=, >, >= 共有ドライブの主催者であるユーザーとグループの数 x 必要
orgUnitId =, != 共有ドライブの組織単位ID o 必要

1.3. レスポンスの内容

DriveList

メソッド 戻り値 説明
getNextPageToken String 次のページのページトークン
リストの最後の場合はNULL
getKind String リソースの種類
固定文字列:"drive#fileList"
getDrives List<Drive> 共有ドライブのリスト

2. 共有ドライブの情報を取得

2.1. スコープ

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

DriveScopes.DRIVE
DriveScopes.DRIVE_READONLY

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

2.2. 実行

情報を取得した共有ドライブIDを指定します。

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

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Drives drives = drive.drives();
	    
    Drive.Drives.Get get = drives.get("共有ドライブID");
    get.setFields("*");
    
    com.google.api.services.drive.model.Drive res = get.execute();
    System.out.println(res);
}

2.2.1. HTTPリクエスト

GET: https://www.googleapis.com/drive/v3/drives/{共有ドライブID}
が実行されます。

2.2.2. クエリパラメータ

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

メソッド 引数 説明
setUseDomainAdminAccess Boolean ドメイン管理者としてリクエストを発行するか

2.3. レスポンスの内容

Drive

「com.google.api.services.drive.model.Drive」を示します。

フィールド メソッド 戻り値 説明
id getId String 共有ドライブID
name getName String 共有ドライブの名前
colorRgb getColorRgb String 共有ドライブの色
kind getKind String リソースの種類
固定文字列:"drive#drive"
backgroundImageLink getBackgroundImageLink String 共有ドライブの背景イメージへの短期間のリンク
capabilities getCapabilities Capabilities 現在のユーザーが共有ドライブ上で持つ機能
themeId getThemeId String 背景画像と色が設定されるテーマID
createdTime getCreatedTime String 共有ドライブが作成された時刻
hidden getHidden Boolean 共有ドライブをデフォルトのビューで非表示にするか
restrictions getRestrictions Restrictions 共有ドライブまたは共有ドライブ内のアイテムに適用される一連の制限
orgUnitId getOrgUnitId String 共有ドライブの組織単位
クエリパラメータのsetUseDomainAdminAccessがtrueの場合のみ

Capabilities

メソッド 戻り値 説明
getCanAddChildren Boolean 現在のユーザーが共有ドライブ内のフォルダーに子を追加できるか
getCanComment Boolean 現在のユーザーが共有ドライブ内のファイルにコメントできるか
getCanCopy Boolean 現在のユーザーが共有ドライブ内のファイルをコピーできるか
getCanDeleteDrive Boolean 現在のユーザーが共有ドライブを削除できるか
getCanDownload Boolean 現在のユーザーが共有ドライブにファイルをダウンロードできるか
getCanEdit Boolean 現在のユーザーが共有ドライブ内のファイルを編集できるか
getCanListChildren Boolean 現在のユーザーが共有ドライブ内のフォルダーの子の一覧を表示できるか
getCanManageMembers Boolean 現在のユーザーが共有ドライブにメンバーを追加、削除、または役割を変更できるか
getCanReadRevisions Boolean 現在のユーザーが共有ドライブ内のファイルのリビジョン リソースを読み取ることができるか
getCanRename Boolean 現在のユーザーが共有ドライブ内のファイルまたはフォルダーの名前を変更できるか
getCanRenameDrive Boolean 現在のユーザーが共有ドライブの名前を変更できるか
getCanChangeDriveBackground Boolean 現在のユーザーが共有ドライブの背景を変更できるか
getCanShare Boolean 現在のユーザーが共有ドライブ内のファイルまたはフォルダーを共有できるか
getCanChangeCopyRequiresWriterPermissionRestriction Boolean 現在のユーザーがcopyRequiresWriterPermission共有ドライブの制限を変更できるか
getCanChangeDomainUsersOnlyRestriction Boolean 現在のユーザーがdomainUsersOnly共有ドライブの制限を変更できるか
getCanChangeDriveMembersOnlyRestriction Boolean 現在のユーザーがdriveMembersOnly共有ドライブの制限を変更できるか
getCanChangeSharingFoldersRequiresOrganizerPermissionRestriction Boolean 現在のユーザーがsharingFoldersRequiresOrganizerPermission共有ドライブの制限を変更できるか
getCanResetDriveRestrictions Boolean 現在のユーザーが共有ドライブの制限をデフォルトにリセットできるか
getCanDeleteChildren Boolean 現在のユーザーが共有ドライブ内のフォルダーから子を削除できるか
getCanTrashChildren Boolean 現在のユーザーが共有ドライブ内のフォルダーから子をゴミ箱に入れることができるか

Restrictions

メソッド 戻り値 説明
getCopyRequiresWriterPermission Boolean 共有ドライブ内のファイルをコピー、印刷、またはダウンロードするオプションを、読者とコメント投稿者に対して無効にするか
getDomainUsersOnly Boolean 共有ドライブおよび共有ドライブ内のアイテムへのアクセスを、共有ドライブが属するドメインのユーザーに制限するかどうか
getDriveMembersOnly Boolean 共有ドライブ内のアイテムへのアクセスをそのメンバーに制限するか
getAdminManagedRestrictions Boolean 制限を変更するには、共有ドライブに対する管理者権限が必要か
getSharingFoldersRequiresOrganizerPermission Boolean オーガナイザーの役割を持つユーザーのみがフォルダーを共有できるか


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