LoginSignup
1
1

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

Last updated at Posted at 2024-03-10

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

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Drive API v3] JavaでDrive APIを使う
を参照ください。

No 目次
1 ファイルリストを取得
1 スコープ
2 実行
3 レスポンスの内容
2 ファイルの情報を取得
1 スコープ
2 実行
3 レスポンスの内容
3 ファイルのラベルを取得
1 スコープ
2 実行
3 レスポンスの内容
4 ファイルIDリストを取得
1 スコープ
2 実行
3 レスポンスの内容

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インスタンスを取得)
でスコープを指定してください。

1.2. 実行

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

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

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 次のページで前のリスト要求を継続するためのトークン
レスポンスのgetNextPageTokenで取得が可能
setDriveId String 検索する共有ドライブID
setCorpora String 適用されるアイテム。
Corporaの定義値を参照(デフォルトはuser)
setIncludeItemsFromAllDrives Boolean マイドライブと共有ドライブの両方の項目を結果に含めるか
setOrderBy String ソートキーのカンマ区切りのリスト
下記をカンマ区切りで繋げる
createdTime、folder、modifiedByMeTime、modifiedTime、name、name_natural、quotaBytesused、recency、sharedWithMeTime、stars、viewedByMeTime

デフォルトは昇順、descを付けると降順の取得が可能
setSupportsAllDrives Boolean 要求元のアプリケーションがマイ ドライブと共有ドライブの両方をサポートしているか

Corporaの定義値

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

1.3. レスポンスの内容

FileList

フィールド メソッド 戻り値 説明
nextPageToken getNextPageToken String 次のページのページトークン
リストの最後の場合はNULL
kind getKind String リソースの種類
固定文字列:"drive#fileList"
incompleteSearch getIncompleteSearch Boolean 検索プロセスが不完全であったか
files getFiles List<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インスタンスを取得)
でスコープを指定してください。

2.2. 実行

情報を取得したいファイルのファイルIDを指定します。

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

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 リソースの種類
固定文字列:"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チェックサム
バイナリコンテンツのみ
contentHints getContentHints 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 ファイルを最後に変更したユーザー
owners getOwners List<User> このファイルの所有者
headRevisionId getHeadRevisionId String ファイルの先頭リビジョンのID
sharingUser getSharingUser User 要求しているユーザーとファイルを共有したユーザー
webViewLink getWebViewLink String ブラウザの関連する Googleエディタまたはビューアでファイルを開くためのリンク
webContentLink getWebContentLink String ブラウザでファイルのコンテンツをダウンロードするためのリンク
バイナリコンテンツのみ
size getSize Long BLOB およびファースト パーティ エディター ファイルのバイト単位のサイズ
permissions getPermissions List<Permission> ファイルの権限の完全なリスト
hasThumbnail getHasThumbnail Boolean このファイルにサムネイルがあるか
spaces getSpaces List<String> ファイルを含むスペースのリスト
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 アップロードされたコンテンツの元のファイル名、またはフィールドの元の名前。
バイナリコンテンツのみ
ownedByMe getOwnedByMe Boolean ユーザーがファイルを所有しているか
fullFileExtension getFullFileExtension String フィールドから抽出された完全なファイル拡張子
properties getProperties Map<String,String> すべてのアプリに表示される任意のキーと値のペアのコレクション
isAppAuthorized getIsAppAuthorized Boolean ファイルが作成されたか
capabilities getCapabilities Capabilities 現在のユーザーがこのファイルに対して持つ機能
hasAugmentedPermissions getHasAugmentedPermissions Boolean このファイルに直接アクセス許可があるか
共有ドライブのアイテムのみ
trashingUser getTrashingUser User ファイルを明示的にゴミ箱に捨てたユーザー
共有ドライブのアイテム
thumbnailVersion getThumbnailVersion Long サムネイル キャッシュの無効化で使用されるサムネイル バージョン
trashedTime getTrashedTime String 項目が破棄された時刻
modifiedByMe getModifiedByMe Boolean ファイルがこのユーザーによって変更されたか
permissionIds getPermissionIds List<String> このファイルにアクセスできるユーザーの権限IDのリスト
imageMediaMetadata getImageMediaMetadata ImageMediaMetadata 画像メディアに関する追加のメタデータ (利用可能な場合)
location getLocation 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 ビデオメディアに関する追加のメタデータ
shortcutDetails getShortcutDetails ShortcutDetails ショートカットファイルの詳細
contentRestrictions getContentRestrictions List<ContentRestriction> ファイルのコンテンツへのアクセスに対する制限
resourceKey getResourceKey String 共有リンク経由でアイテムにアクセスするために必要なキー
linkShareMetadata getLinkShareMetadata LinkShareMetadata LinkShare関連の詳細
labelInfo getLabelInfo LabelInfo ファイルのラベルの概要
sha1Checksum getSha1Checksum String このファイルに関連付けられた SHA1 チェックサム
sha256Checksum getSha256Checksum String このファイルに関連付けられたSHA256 チェックサム (利用可能な場合)

ContentHints

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

Thumbnail

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

Capabilities

メソッド 戻り値 説明
getCanMoveChildrenOutOfDrive Boolean 現在のユーザーがこのフォルダーの子を共有ドライブの外に移動できるか
共有ドライブのアイテムのみ
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 現在のユーザーがこのフォルダーの子を削除できるか
共有ドライブのアイテムのみ
getCanTrashChildren Boolean 現在のユーザーがこのフォルダーの子をゴミ箱に入れることができるか
共有ドライブのアイテムのみ
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> パラメータのラベルID

Permission

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

PermissionDetails

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

ContentRestriction

メソッド 戻り値 説明
getReadOnly boolean ファイルの内容が読み取り専用か
getReason String ファイルの内容が制限されている理由
getType String コンテンツ制限のタイプ
getRestrictingUser User コンテンツ制限を設定したユーザー
getRestrictionTime 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インスタンスを取得)
でスコープを指定してください。

3.2. 実行

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

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 次のページで前のリスト要求を継続するためのトークン
レスポンスのgetNextPageTokenで取得が可能
setMaxResults Integer ページごとに返されるラベルの最大数
デフォルトは100

3.3. レスポンスの内容

LabelList

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

Label

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

LabelField

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

DateTime

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

User

メソッド 戻り値 説明
getDisplayName String 表示名
getEmailAddress String ユーザーの電子メールアドレス
getKind String リソースの種類
固定文字列:"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インスタンスを取得)
でスコープを指定してください。

4.2. 実行

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を使用できるスペース
drive、appDataFolder
setType String IDを使用できるアイテムのタイプ
files、shortcuts
shortcutsはsetSpace("drive")のみ使用可能

4.3. レスポンスの内容

GeneratedIds

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


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