[Google Drive API v3] JavaでDriveのファイルの情報を取得する

Google Drive API v3（Java）を使用して、
Driveに置かれているファイルの情報を取得する方法
についてご紹介します。

:::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-レスポンスの内容)|
|3||[ファイルのラベルを取得](#3-ファイルのラベルを取得)|
||1|[スコープ](#31-スコープ)|
||2|[実行](#32-実行)|
||3|[レスポンスの内容](#33-レスポンスの内容)|
|4||[ファイルIDリストを取得](#4-ファイルidリストを取得)|
||1|[スコープ](#41-スコープ)|
||2|[実行](#42-実行)|
||3|[レスポンスの内容](#43-レスポンスの内容)|

## 1. ファイルリストを取得
Driveにあるファイルのリストを取得します。

### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
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インスタンスを取得)](https://qiita.com/doran/items/15b2c59adb410ddeeb8a#22-driveインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行

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

レスポンスの[getNextPageToken](#filelist)がNULLではない場合、
全てのリストが取得できていません。
[クエリパラメータのsetPageToken](#122-クエリパラメータ)に取得できた値を設定し、
再度APIを実行します。
```java
public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    Drive.Files.List list = files.list();
    list.setFields("*");
    
//レスポンスのgetNextPageTokenがNULLではない場合
//list.setPageToken("レスポンスのgetNextPageToken");

    FileList res = list.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
GET:　https:\//www.googleapis.com/drive/v3/files　
が実行されます。

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

|メソッド|引数|説明|
|---|---|---|
|setPageSize|Integer|ページごとに返されるファイルの最大数|
|setPageToken|String|次のページで前のリスト要求を継続するためのトークン<br>**レスポンスのgetNextPageTokenで取得が可能**|
|setDriveId|String|検索する共有ドライブID|
|setCorpora|String|適用されるアイテム。<br>[Corporaの定義値](#corporaの定義値)を参照（デフォルトはuser）|
|setIncludeItemsFromAllDrives|Boolean|マイドライブと共有ドライブの両方の項目を結果に含めるか|
|setOrderBy|String|ソートキーのカンマ区切りのリスト<br>下記をカンマ区切りで繋げる<br>createdTime、folder、modifiedByMeTime、modifiedTime、name、name_natural、quotaBytesused、recency、sharedWithMeTime、stars、viewedByMeTime<br><br>デフォルトは昇順、descを付けると降順の取得が可能|
|setSupportsAllDrives|Boolean|要求元のアプリケーションがマイ ドライブと共有ドライブの両方をサポートしているか|

#### Corporaの定義値

|定義値|内容|
|---|---|
|user|共有ドライブとファイルの両方を含む|
|drive|共有ドライブ内のすべてのアイテム<br>この定義値を使用した場合は、driveIdが必須|
|allDrives|ユーザがアクセスしたファイルとすべての共有ドライブ|
|domain|共有ドライブとファイル、ドメインと共有されているファイル|

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

#### FileList

|フィールド|メソッド|戻り値|説明|
|---|---|---|---|
|nextPageToken|getNextPageToken|String|次のページのページトークン<br>リストの最後の場合はNULL|
|kind|getKind|String|リソースの種類<br>固定文字列：\"drive#fileList\"|
|incompleteSearch|getIncompleteSearch|Boolean|検索プロセスが不完全であったか|
|files|getFiles|List\<[File](#file)\>|ファイルのリスト|
  
## 2. ファイルの情報を取得
Driveにある指定したファイルの情報を取得します。

### 2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
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インスタンスを取得)](https://qiita.com/doran/items/15b2c59adb410ddeeb8a#22-driveインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行
情報を取得したいファイルのファイルIDを指定します。

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

```java
public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    Drive.Files.Get get = files.get("ファイルID");
    get.setFields("*");
    
    File res = get.execute();
    System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
GET：　https:\//www.googleapis.com/drive/v3/files/{ファイルID}　
が実行されます。

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

|メソッド|引数|説明|
|---|---|---|
|setAcknowledgeAbuse|Boolean|ユーザーが既知のマルウェアまたはその他の不正なファイルをダウンロードするリスクを認識しているか|
|setSupportsAllDrives|Boolean|要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか|

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

|フィールド|メソッド|戻り値|説明|
|---|---|---|---|
|id|getId|String|ファイルのID|
|kind|getKind|String|リソースの種類<br>固定文字列：\"drive#file\"|
|name|getName|String|ファイルの名前|
|mimeType|getMimeType|String|ファイルのMIMEタイプ|
|description|getDescription|String|ファイルの簡単な説明|
|driveId|getDriveId|String|ファイルが存在する共有ドライブID|
|fileExtension|getFileExtension|String|最後のコンポーネントfullFileExtension**バイナリコンテンツのみ**|
|copyRequiresWriterPermission|getCopyRequiresWriterPermission|Boolean|コピー、印刷、ダンロードするのにwriter権限が必要か|
|md5Checksum|getMd5Checksum|String|ファイルのコンテンツのMD5チェックサム<br>**バイナリコンテンツのみ**|
|contentHints|getContentHints|[ContentHints](#contenthints)|ファイルの内容に関する追加情報|
|writersCanShare|getWritersCanShare|Boolean|権限のみを持つユーザーがwriterファイルの権限を変更できるか|
|viewedByMe|getViewedByMe|Boolean|このユーザーがファイルを閲覧したか|
|exportLinks|getExportLinks|Map\<String,String\>|ドキュメントエディターファイルを特定の形式にエクスポートするためのリンク|
|parents|getParents|List\<String\>|ファイルを含む親フォルダーのID|
|thumbnailLink|getThumbnailLink|String|ファイルのサムネイルへの短期間のリンク|
|iconLink|getIconLink|String|ファイルのアイコンへの静的な未認証のリンク|
|shared|getShared|Boolean|ファイルが共有されているかどう|
|lastModifyingUser|getLastModifyingUser|[User](#user)|ファイルを最後に変更したユーザー|
|owners|getOwners|List\<[User](#user)\>|このファイルの所有者|
|headRevisionId|getHeadRevisionId|String|ファイルの先頭リビジョンのID|
|sharingUser|getSharingUser|[User](#user)|要求しているユーザーとファイルを共有したユーザー|
|webViewLink|getWebViewLink|String|ブラウザの関連する Googleエディタまたはビューアでファイルを開くためのリンク|
|webContentLink|getWebContentLink|String|ブラウザでファイルのコンテンツをダウンロードするためのリンク<br>**バイナリコンテンツのみ**|
|size|getSize|Long|BLOB およびファースト パーティ エディター ファイルのバイト単位のサイズ|
|permissions|getPermissions|List\<[Permission](#permission)\>|ファイルの権限の完全なリスト|
|hasThumbnail|getHasThumbnail|Boolean|このファイルにサムネイルがあるか|
|spaces|getSpaces|List\<String\>|ファイルを含むスペースのリスト<br>drive、appDataFolder、photos|
|folderColorRgb|getFolderColorRgb|String|フォルダーまたはフォルダーへのショートカットの色|
|starred|getStarred|Boolean|ユーザーがファイルにスターを付けているか|
|trashed|getTrashed|Boolean|ファイルがゴミ箱に入れられか、または親フォルダーからゴミ箱に入れられたか|
|explicitlyTrashed|getExplicitlyTrashed|Boolean|明示的(再帰的ではなく)にゴミ箱に入れられたか|
|createdTime|getCreatedTime|String|ファイルが作成された時刻|
|modifiedTime|getModifiedTime|String|ファイルが本人以外に変更された時刻|
|modifiedByMeTime|getModifiedByMeTime|String|ファイルが本人よって変更された時刻|
|viewedByMeTime|getViewedByMeTime|String|ユーザーがファイルを最後に表示した時刻|
|sharedWithMeTime|getSharedWithMeTime|String|ファイルがユーザーと共有された時刻|
|quotaBytesUsed|getQuotaBytesUsed|Long|ファイルによって使用されるストレージクォータのバイト数|
|version|getVersion|Long|バージョン番号|
|originalFilename|getOriginalFilename|String|アップロードされたコンテンツの元のファイル名、またはフィールドの元の名前。<br>**バイナリコンテンツのみ**|
|ownedByMe|getOwnedByMe|Boolean|ユーザーがファイルを所有しているか|
|fullFileExtension|getFullFileExtension|String|フィールドから抽出された完全なファイル拡張子|
|properties|getProperties|Map\<String,String\>|すべてのアプリに表示される任意のキーと値のペアのコレクション|
|isAppAuthorized|getIsAppAuthorized|Boolean|ファイルが作成されたか|
|capabilities|getCapabilities|[Capabilities](#capabilities)|現在のユーザーがこのファイルに対して持つ機能|
|hasAugmentedPermissions|getHasAugmentedPermissions|Boolean|このファイルに直接アクセス許可があるか<br>**共有ドライブのアイテムのみ**|
|trashingUser|getTrashingUser|[User](#user)|ファイルを明示的にゴミ箱に捨てたユーザー<br>**共有ドライブのアイテム**|
|thumbnailVersion|getThumbnailVersion|Long|サムネイル キャッシュの無効化で使用されるサムネイル バージョン|
|trashedTime|getTrashedTime|String|項目が破棄された時刻|
|modifiedByMe|getModifiedByMe|Boolean|ファイルがこのユーザーによって変更されたか|
|permissionIds|getPermissionIds|List\<String\>|このファイルにアクセスできるユーザーの権限IDのリスト|
|imageMediaMetadata|getImageMediaMetadata|[ImageMediaMetadata](#imagemediametadata)|画像メディアに関する追加のメタデータ (利用可能な場合)|
|location|getLocation|[Location](#location)|画像に保存されている地理的位置情報|
|rotation|getRotation|Integer|画像の元の方向から適用される時計回りの90度回転の数|
|time|getTime|String|写真が撮影された日時|
|cameraMake|getCameraMake|String|写真の作成に使用されたカメラのメーカー|
|cameraModel|getCameraModel|String|写真の作成に使用されたカメラのモデル|
|exposureTime|getExposureTime|Float|露出の長さ (秒単位)|
|aperture|getAperture|Float|写真の作成に使用される絞り (F 値)|
|focalLength|getFocalLength|Float|写真の作成に使用された焦点距離 (ミリメートル単位)|
|isoSpeed|getIsoSpeed|Integer|写真の作成に使用されたISO速度|
|exposureBias|getExposureBias|Float|写真の露出バイアス (APEX 値)|
|maxApertureValue|getMaxApertureValue|Float|写真の作成に使用された焦点距離におけるレンズの最小のF値(APEX値)|
|subjectDistance|getSubjectDistance|Integer|写真の被写体までの距離 (メートル単位)|
|lens|getLens|String|写真の作成に使用されたレンズ|
|videoMediaMetadata|getVideoMediaMetadata|[VideoMediaMetadata](#videomediametadata)|ビデオメディアに関する追加のメタデータ|
|shortcutDetails|getShortcutDetails|[ShortcutDetails](#shortcutdetails)|ショートカットファイルの詳細|
|contentRestrictions|getContentRestrictions|List\<[ContentRestriction](#contentrestriction)\>|ファイルのコンテンツへのアクセスに対する制限|
|resourceKey|getResourceKey|String|共有リンク経由でアイテムにアクセスするために必要なキー|
|linkShareMetadata|getLinkShareMetadata|[LinkShareMetadata](#linksharemetadata)|LinkShare関連の詳細|
|labelInfo|getLabelInfo|[LabelInfo](#labelinfo)|ファイルのラベルの概要|
|sha1Checksum|getSha1Checksum|String|このファイルに関連付けられた SHA1 チェックサム|
|sha256Checksum|getSha256Checksum|String|このファイルに関連付けられたSHA256 チェックサム (利用可能な場合)|

#### ContentHints

|メソッド|戻り値|説明|
|---|---|---|
|getIndexableText|String|フルテキスト クエリを改善するためにファイルのインデックスを作成するテキスト|
|getThumbnail|[Thumbnail](#thumbnail)|ファイルのサムネイル|

#### Thumbnail

|メソッド|戻り値|説明|
|---|---|---|
|getImage|String|URLセーフなBase64でエンコードされたサムネイルデータ|
|getMimeType|String|サムネイルのMIMEタイプ|

#### Capabilities

|メソッド|戻り値|説明|
|---|---|---|
|getCanMoveChildrenOutOfDrive|Boolean|現在のユーザーがこのフォルダーの子を共有ドライブの外に移動できるか<br>**共有ドライブのアイテムのみ**|
|getCanReadDrive|Boolean|現在のユーザーがこのファイルが属する共有ドライブを読み取ることができるか|
|getCanEdit|Boolean|現在のユーザーがこのファイルを編集できるか|
|getCanCopy|Boolean|現在のユーザーがこのファイルをコピーできるか|
|getCanComment|Boolean|現在のユーザーがこのファイルにコメントできるか|
|getCanAddChildren|Boolean|現在のユーザーがこのフォルダーに子を追加できるか|
|getCanDelete|Boolean|現在のユーザーがこのファイルを削除できるか|
|getCanDownload|Boolean|現在のユーザーがこのファイルをダウンロードできるか|
|getCanListChildren|Boolean|現在のユーザーがこのフォルダーの子の一覧を表示できるか|
|getCanRemoveChildren|Boolean|現在のユーザーがこのフォルダーから子を削除できるか|
|getCanRename|Boolean|現在のユーザーがこのファイルの名前を変更できるか|
|getCanTrash|Boolean|現在のユーザーがこのファイルをゴミ箱に移動できるか|
|getCanReadRevisions|Boolean|現在のユーザーがこのファイルのリビジョン リソースを読み取ることができるか|
|getCanChangeCopyRequiresWriterPermission|Boolean|現在のユーザーがこのファイルの制限を変更できるか|
|getCanUntrash|Boolean|現在のユーザーがこのファイルをゴミ箱から復元できるか|
|getCanModifyContent|Boolean|現在のユーザーがこのファイルの内容を変更できるか|
|getCanDeleteChildren|Boolean|現在のユーザーがこのフォルダーの子を削除できるか<br>**共有ドライブのアイテムのみ**|
|getCanTrashChildren|Boolean|現在のユーザーがこのフォルダーの子をゴミ箱に入れることができるか<br>**共有ドライブのアイテムのみ**|
|getCanMoveItemOutOfDrive|Boolean|現在のユーザーが親を変更することでこのアイテムをこのドライブの外に移動できるか|
|getCanAddMyDriveParent|Boolean|現在のユーザーが、同じリクエスト内で既存の親を削除せずに項目の親を追加できるか|
|getCanRemoveMyDriveParent|Boolean|現在のユーザーが、同じリクエストで別の親を追加せずにアイテムから親を削除できるか|
|getCanMoveItemWithinDrive|Boolean|現在のユーザーがこのドライブ内でこのアイテムを移動できるか|
|getCanShare|Boolean|現在のユーザーがこのファイルの共有設定を変更できるか|
|getCanMoveChildrenWithinDrive|Boolean|現在のユーザーがこのドライブ内でこのフォルダーの子を移動できるか|
|getCanAddFolderFromAnotherDrive|Boolean|現在のユーザーが別のドライブ (別の共有ドライブまたはマイ ドライブ) からこのフォルダーにフォルダーを追加できるか|
|getCanChangeSecurityUpdateEnabled|Boolean|現在のユーザーがリンク共有メタデータのsecurityUpdateEnabledフィールドを変更できるか|
|getCanAcceptOwnership|Boolean|現在のユーザーがファイルの保留中の所有者であるか|
|getCanReadLabels|Boolean|現在のユーザーがファイルのラベルを読み取ることができるか|
|getCanModifyLabels|Boolean|現在のユーザーがファイルのラベルを変更できるか|
|getCanModifyEditorContentRestriction|Boolean|現在のユーザーが、編集者が制限されているファイルのコンテンツ制限を追加または変更できるか|
|getCanModifyOwnerContentRestriction|Boolean|現在のユーザーが、所有者が制限されているコンテンツ制限を追加または変更できるか|
|getCanRemoveContentRestriction|Boolean|現在のユーザーが削除できるファイルのコンテンツ制限があるか|

#### ImageMediaMetadata

|メソッド|戻り値|説明|
|---|---|---|
|getFlashUsed|Boolean|写真の作成にフラッシュが使用されたか|
|getMeteringMode|String|写真の作成に使用された測光モード|
|getSensor|String|写真の作成に使用されたセンサーの種類|
|getExposureMode|String|写真の作成に使用された露出モード|
|getColorSpace|String|写真の色空間|
|getWhiteBalance|String|写真の作成に使用されたホワイトバランスモード|
|getWidth|Integer|画像の幅 (ピクセル単位)|
|getHeight|Integer|画像の高さ (ピクセル単位)|

#### Location

|メソッド|戻り値|説明|
|---|---|---|
|getLatitude|Double|画像に保存されている緯度|
|getLongitude|Double|画像に保存されている経度|
|getAltitude|Double|画像に保存されている高度|

#### VideoMediaMetadata

|メソッド|戻り値|説明|
|---|---|---|
|getWidth|Integer|ビデオの幅(ピクセル単位)|
|getHeight|Integer|ビデオの高さ (ピクセル単位)|
|getDurationMillis|Long|ビデオの長さ (ミリ秒単位)|

#### ShortcutDetails

|メソッド|戻り値|説明|
|---|---|---|
|getTargetId|String|ショートカットが指すファイルのID|
|getTargetMimeType|String|ショートカットが指すファイルのMIMEタイプ|
|getTargetResourceKey|String|ターゲットファイルの ResourceKey|

#### LinkShareMetadata

|メソッド|戻り値|説明|
|---|---|---|
|getSecurityUpdateEligible|Boolean|ファイルがセキュリティ更新の対象となるか|
|getSecurityUpdateEnabled|Boolean|このファイルのセキュリティ更新プログラムが有効か|

#### LabelInfo

|メソッド|戻り値|説明|
|---|---|---|
|getLabels|List\<[Label](#label)\>|パラメータのラベルID|

#### Permission

|メソッド|戻り値|説明|
|---|---|---|
|getId|String|権限ID|
|getType|String|被付与者のタイプ<br>user、group、domain、anyone|
|getDisplayName|String|権限名。Typeにより以下の名前を返す。<br>user：Google アカウントに定義されているユーザーのフルネーム<br>group：Googleグループの名前<br>domain：文字列ドメイン名|
|getKind|String|リソースの識別名<br>固定文字列"drive#permission"|
|getPermissionDetails|List\<[PermissionDetails](#permissiondetails)\>|アクセス許可の継承についての詳細<br>**共有ドライブのみ**|
|getPhotoLink|String|ユーザーのプロフィール写真へのリンク|
|getEmailAddress|String|参照するユーザーまたはグループの電子メールアドレス|
|getRole|String|付与される役割<br>owner、organizer、fileOrganizer、writer、commenter、reader、allowFileDiscovery|
|getAllowFileDiscovery|Boolean|検索によるファイルの検出を許可する権限か<br>**typeがanyoneの場合のみ**|
|getDomain|String|権限が参照するドメイン|
|getExpirationTime|String|期限切れになる時刻|
|getDeleted|Boolean|関連付けられたアカウントが削除されているか<br>**typeがuser、groupの場合のみ**|
|getView|String|権限のビュー。(publishedのみ)|
|getPendingOwner|Boolean|関連付けられたアカウントが保留中の所有者であるか|

#### PermissionDetails

|メソッド|戻り値|説明|
|---|---|---|
|getPermissionType|String|権限のタイプ<br>file、member|
|getInheritedFrom|String|継承元となるアイテムのID|
|getRole|String|主な役割<br>organizer、fileOrganizer、writer、commenter、reader|
|getInherited|Boolean|権限が継承されるかどうか|

#### ContentRestriction

|メソッド|戻り値|説明|
|---|---|---|
|getReadOnly|boolean|ファイルの内容が読み取り専用か|
|getReason|String|ファイルの内容が制限されている理由|
|getType|String|コンテンツ制限のタイプ|
|getRestrictingUser|[User](#usesr)|コンテンツ制限を設定したユーザー|
|getRestrictionTime|[DateTime](#datetime)|コンテンツ制限が設定された時刻|
|getOwnerRestricted|Boolean|コンテンツ制限を、ファイルを所有するユーザーのみが変更または削除できるか|
|getSystemRestricted|Boolean|コンテンツ制限がシステムによって (署名などにより) 適用されたか|

## 3. ファイルのラベルを取得
Driveにあるファイルのラベルを取得します。

### 3.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
DriveScopes.DRIVE
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_METADATA
DriveScopes.DRIVE_METADATA_READONLY
DriveScopes.DRIVE_READONLY
```
[⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)](https://qiita.com/doran/items/15b2c59adb410ddeeb8a#22-driveインスタンスを取得)
でスコープを指定してください。

### 3.2. 実行
レスポンスの[getNextPageToken](#labellist)がNULLではない場合、
全てのリストが取得できていません。
[クエリパラメータのsetPageToken](#322-クエリパラメータ)に取得できた値を設定し、
再度APIを実行します。
```java
public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    Drive.Files.ListLabels labels = files.listLabels("ファイルID");

//レスポンスのgetNextPageTokenがNULLではない場合
//labels.setPageToken("レスポンスのgetNextPageToken");
    
    LabelList res = labels.execute();
    System.out.println(res);
}
```
#### 3.2.1. HTTPリクエスト
GET:　https:\//www.googleapis.com/drive/v3/files/{ファイルID}/listLabels
が実行されます。

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

|メソッド|引数|説明|
|---|---|---|
|setPageToken|String|次のページで前のリスト要求を継続するためのトークン<br>**レスポンスのgetNextPageTokenで取得が可能**|
|setMaxResults|Integer|ページごとに返されるラベルの最大数<br>デフォルトは100|

### 3.3. レスポンスの内容
#### LabelList

|メソッド|戻り値|説明|
|---|---|---|
|getKind|String|リソースの種類<br>固定文字列：\"drive#labelList\"|
|getNextPageToken|String|次のページのページトークン<br>権限リストの最後ならばNULL|
|getLabels|List\<[Label](#label)\>|ラベルのリスト|

#### Label

|メソッド|戻り値|説明|
|---|---|---|
|getId|String|ラベルID|
|getRevisionId|String|ラベルのリビジョン|
|getKind|String|リソースの種類<br>固定文字列：\"drive#label\"|
|getFields|Map\<String,[LabelField](#labelfield)\>|フィールドIDをキーとした、ラベル上のフィールドのマップ|

#### LabelField

|メソッド|戻り値|説明|
|---|---|---|
|getKind|String|リソースの種類<br>固定文字列：\"drive#labelField\"|
|getId|String|ラベルフィールドID|
|getValueType|String|フィールドタイプ<br>dateString、integer、selection、text、user|
|getDateString|List\<[DateTime](#datetime)\>|日付情報<br>**valueTypeがdateStringの場合のみ**|
|getInteger|List\<Long\>|数値情報<br>**valueTypeがintegerの場合のみ**|
|getSelection|List\<String\>|選択情報<br>**valueTypeがselectionの場合のみ**|
|getText|List\<String\>|テキスト情報<br>**valueTypeがtextの場合のみ**|
|getUser|List\<User\>|ユーザー情報<br>**valueTypeがuserの場合のみ**|

#### DateTime

|メソッド|戻り値|説明|
|---|---|---|
|getValue|long|unixミリ秒|
|getTimeZoneShift|int|UTCからの分数で表されるタイムゾーン|

#### User

|メソッド|戻り値|説明|
|---|---|---|
|getDisplayName|String|表示名|
|getEmailAddress|String|ユーザーの電子メールアドレス|
|getKind|String|リソースの種類<br>固定文字列：\"drive#user\"|
|getMe|Boolean|このユーザーが要求ユーザーであるか|
|getPermissionId|String|権限リソースに表示されるユーザーID|
|getPhotoLink|String|利用可能な場合、ユーザーのプロフィール写真へのリンク|


## 4. ファイルIDリストを取得
Driveにファイルを作成(新規、またはコピーにより作成)するときに
使用可能なファイルIDのリストを取得します。

ファイル作成やコピー時に作成されるファイルのIDを指定する場合に使用します。
通常は、ファイルIDは自動で割り振られるのでファイルIDの指定はしません。

### 4.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE
```
[⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)](https://qiita.com/doran/items/15b2c59adb410ddeeb8a#22-driveインスタンスを取得)
でスコープを指定してください。

### 4.2. 実行

```java
public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    Drive.Files.GenerateIds generateIdse = files.generateIds();
    
    GeneratedIds res = generateIdse.execute();
    System.out.println(res);
}
```
#### 4.2.1. HTTPリクエスト
GET:　https:\//www.googleapis.com/drive/v3/files/generateIds
が実行されます。

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

|メソッド|引数|説明|
|---|---|---|
|setCount|Integer|返されるIDの数|
|setSpace|String|IDを使用できるスペース<br>drive、appDataFolder|
|setType|String|IDを使用できるアイテムのタイプ<br>files、shortcuts<br>shortcutsはsetSpace("drive")のみ使用可能|

### 4.3. レスポンスの内容
#### GeneratedIds

|メソッド|戻り値|説明|
|---|---|---|
|getIds|List\<String\>|IDリスト|
|getSpace|String|これらのIDで作成できるファイルのタイプ|
|getKind|String|リソースの種類<br>固定文字列："drive#generatedIds"|

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