Google Drive API では、ファイルやフォルダの検索に複数の方法がサポートされています。
files.list
メソッドを使用して、ドライブ ユーザーのファイルとフォルダのすべてまたは一部を取得できます。files.list
メソッドを使用して、一部のリソース メソッド(files.get
や files.update
など)に必要な fileId
を取得することもできます。
現在のユーザーのマイドライブ内のすべてのファイルとフォルダを検索する
パラメータなしで files.list
メソッドを使用すると、すべてのファイルとフォルダが返されます。
GET https://www.googleapis.com/drive/v3/files
現在のユーザーのマイドライブ内の特定のファイルまたはフォルダを検索する
特定のファイルまたはフォルダのセットを検索するには、files.list
メソッドでクエリ文字列 q
フィールドを使用し、1 つ以上の検索キーワードを組み合わせて返すファイルをフィルタします。
クエリ文字列は、次の 3 つの部分で構成されます。
query_term operator values
ここで
query_term
は、検索するクエリ語句またはフィールドです。operator
には、クエリ語句の条件を指定します。values
は、検索結果のフィルタリングに使用する特定の値です。
ファイルやフォルダのフィルタに使用できるクエリ語句と演算子を表示するには、検索クエリと演算子をご覧ください。
たとえば、次のクエリ文字列は MIME タイプを設定して、フォルダのみを返すように検索をフィルタします。
q: mimeType = 'application/vnd.google-apps.folder'
MIME タイプの詳細については、Google Workspace と Google ドライブでサポートされている MIME タイプをご覧ください。
クエリ文字列の例
次の表に、基本的なクエリ文字列の例を示します。実際のコードは、検索に使用するクライアント ライブラリによって異なります。
また、クエリが適切に機能するように、ファイル名内の特殊文字をエスケープする必要があります。たとえば、ファイル名にアポストロフィ('
)とバックスラッシュ("\"
)の両方が含まれている場合は、バックスラッシュを使用してエスケープします(例: name
contains 'quinn\'s paper\\essay'
)。
クエリの対象 | 例 |
---|---|
「hello」という名前のファイル | name = 'hello' |
名前に「hello」と「goodbye」という単語を含むファイル | name contains 'hello' and name contains 'goodbye' |
名前に「hello」という単語が含まれていないファイル | not name contains 'hello' |
「重要」というテキストを含むゴミ箱内のファイル | fullText contains 'important' and trashed = true |
「hello」という単語を含むファイル | fullText contains 'hello' |
「hello」という単語が含まれていないファイル | not fullText contains 'hello' |
「hello world」に完全に一致するフレーズを含むファイル | fullText contains '"hello world"' |
「\」文字を含むクエリ(例: 「\authors」)を含むファイル | fullText contains '\\authors' |
フォルダであるファイル | mimeType = 'application/vnd.google-apps.folder' |
フォルダ以外のファイル | mimeType != 'application/vnd.google-apps.folder' |
指定した日付以降に変更されたファイル(デフォルトのタイムゾーンは UTC) | modifiedTime > '2012-06-04T12:00:00' |
特定の日付より後に変更された画像ファイルまたは動画ファイル | modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/') |
スター付きのファイル | starred = true |
コレクション内のファイル(parents コレクション内のフォルダ ID など) |
'1234567' in parents |
コレクションのアプリデータ フォルダ内のファイル | 'appDataFolder' in parents |
ユーザー「test@example.org」がオーナーであるファイル | 'test@example.org' in owners |
ユーザー「test@example.org」が書き込み権限を持つファイル | 'test@example.org' in writers |
グループ「group@example.org」に書き込み権限が付与されているファイル | 'group@example.org' in writers |
名前に「hello」を含む承認済みユーザーと共有されるファイル | sharedWithMe and name contains 'hello' |
すべてのアプリに公開可能なカスタム ファイル プロパティを含むファイル | properties has { key='mass' and value='1.3kg' } |
リクエスト元のアプリ専用のカスタム ファイル プロパティがあるファイル | appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' } |
誰もまたはドメインと共有していないファイル(限定公開のみ、または特定のユーザーやグループと共有) | visibility = 'limited' |
クライアント ライブラリを使用して検索結果をフィルタする
次のコードサンプルは、クライアント ライブラリを使用して検索結果を JPEG ファイルのファイル名と ID にフィルタリングする方法を示しています。このサンプルでは、mimeType
クエリ語句を使用して、結果を image/jpeg
タイプのファイルに絞り込みます。また、spaces
を drive
に設定して、検索範囲を ドライブ スペースにさらに絞り込みます。nextPageToken
が null
を返した場合、結果はそれ以上存在しません。
Java
Python
Node.js
PHP
カスタム ファイル プロパティを使用してファイルを検索する
カスタム ファイル プロパティでファイルを検索するには、properties
または appProperties
検索クエリ語句とキーと値を使用します。たとえば、値が 8e8aceg2af2ge72e78
でリクエスト元のアプリ専用の additionalID
というカスタム ファイル プロパティを検索するには、次のようにします。
appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
詳細については、カスタム ファイル プロパティを追加するをご覧ください。
特定のラベルまたはフィールド値を持つファイルを検索する
特定のラベルの付いたファイルを検索するには、特定のラベル ID を指定して labels
検索クエリを使用します。たとえば、'labels/LABEL_ID' in
labels
のようにします成功した場合、レスポンスの本文には、ラベルが適用されたすべてのファイル インスタンスが含まれます。
特定のラベル ID がないファイルを検索するには、Not
'labels/LABEL_ID' in labels
を使用します。
特定のフィールド値に基づいてファイルを検索することもできます。たとえば、テキスト値でファイルを検索するには、labels/LABEL_ID.text_field_id ='TEXT'
のようにします。
詳細については、特定のラベルまたはフィールド値を持つファイルを検索するをご覧ください。
コーパスを検索
files.list
を呼び出す検索では、デフォルトで user
の corpora
が使用されます。domain
で共有されているファイルなど、他のコーパスを検索するには、corpora
パラメータを設定します。
1 つのクエリで複数のコーパスを検索できますが、結合されたコーパスが大きすぎると、不完全な結果が返されることがあります。レスポンスの本文で incompleteSearch
が true
の場合、すべてのドキュメントは返されていません。このような場合は、別のコーパス(user
や drive
など)を選択してクエリを絞り込む必要があります。
関連トピック
- 共有ドライブを検索する
- 検索クエリの語句と演算子
- Google Workspace と Google ドライブでサポートされている MIME タイプ
- ロールと権限
- 特定のラベルまたはフィールド値を持つファイルを検索する