[Google Drive API v3] Javaで共有ドライブのビューを表示・非表示にする

Google Drive API v3（Java）を使用して、
共有ドライブのビューを表示・非表示にする方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Drive API v3] JavaでDrive APIを使う](https://qiita.com/doran/items/15b2c59adb410ddeeb8a)
を参照ください。
:::

|No||目次|
|---|---|---|
|1||[共有ドライブを非表示](#1-共有ドライブを非表示)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[共有ドライブを表示](#2-共有ドライブを表示)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|


## 1. 共有ドライブを非表示
共有ドライブのビューを非表示にします。

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

DriveScopes.DRIVE

[⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)](https://qiita.com/doran/items/15b2c59adb410ddeeb8a#22-driveインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行

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

```
public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Drives drives = drive.drives();
    
    Drive.Drives.Unhide unhide = drives.unhide("共有ドライブID");
    unhide.setFields("*");
    
    com.google.api.services.drive.model.Drive res = unhide.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
POST:　https:\//www.googleapis.com/drive/v3/drives/{ドライブID}/unhide
が実行されます。

#### 1.2.2. クエリパラメータ
クエリパラメータはありません。

#### 1.2.3. リクエストボディ
リクエストボディはありません。

### 1.3. レスポンスの内容

#### Drive
(「com.google.api.services.drive.model.Drive」のDriveです)

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

#### 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|現在のユーザーが共有ドライブ内のフォルダーから子をゴミ箱に入れることができるか|

#### BackgroundImageFile

|メソッド|戻り値|説明|
|---|---|---|
|gteId|String|背景画像として使用するGoogleドライブ内の画像ファイルID|
|getXCoordinate|Float|背景画像のトリミング領域の左上隅のX座標(0〜1)|
|getYCoordinate|Float|背景画像のトリミング領域の左上隅のY座標(0〜1)|
|getWidth|Float|トリミングされたイメージの幅(0〜1)|

#### Restrictions

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

## 2. 共有ドライブを表示
非表示中の共有ドライブのビューを表示します。

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

DriveScopes.DRIVE

[⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)](https://qiita.com/doran/items/15b2c59adb410ddeeb8a#22-driveインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行

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

```
public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Drives drives = drive.drives();
    
    Drive.Drives.Hide hide = drives.hide("共有ドライブID");
    hide.setFields("*");
    
    com.google.api.services.drive.model.Drive res = hide.execute();
    System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
POST：　https:\//www.googleapis.com/drive/v3/drives/{ドライブID}/hide
が実行されます。

#### 2.2.2. クエリパラメータ
クエリパラメータはありません。

#### 2.2.3. リクエストボディ
リクエストボディはありません。

### 2.3. レスポンスの内容

#### Drive
[1.3. レスポンスの内容](#13-レスポンスの内容)と同じです。

<br>
<br>
おしまい。。