- この記事は、Google Drive™ APIに関する記事を和訳したものです。
- 原文: Search for files and folders
- 元記事のライセンスは CC-BYで、この和訳記事のライセンスは CC-BYです。
- 自己責任でご利用ください。
- 和訳した時期は 2019年6月ころです。
Drive APIの files.listメソッドを用いてファイルを検索することができます。
1つ以上の検索句を用いて結合された検索クエリを実行するには、q
パラメータを使用します。
それぞれの検索句は、3つの部分で構成されています。
- Field
-
検索されるファイルの属性、例えば、ファイルの属性
name
。 - Operator
-
マッチを提供するためにデータに対して実行されるテスト、例えば、
contains
。 - Value
-
テストされる属性のコンテンツ、例えば、ファイルの名前
My cool document
。
接続詞 and
あるいは or
を用いて句を組み合わせ、not
を用いてクエリを否定します。
files.list
のための有効なフィールド
フィールド | 値のタイプ | 演算子 | 説明 |
---|---|---|---|
name |
string | contains 1, = , != |
ファイルの名前。 |
fullText |
string | contains 2 |
名前、説明、コンテンツ、およびインデックス可能なテキストを含む、ファイルのフルテキスト。 |
mimeType |
string | contains , = , != |
ファイルの MIMEタイプ。 |
modifiedTime |
date3 | <= , < , = , != , > , >= |
ファイルの最終更新日。 |
viewedByMeTime |
date3 | <= , < , = , != , > , >= |
ユーザが最後にファイルを表示した日付。 |
trashed |
boolean | = , != |
ファイルがゴミ箱にあるかどうか。 |
starred |
boolean | = , != |
ファイルがスターされているかどうか。 |
parents |
collection | in |
親のコレクションが指定された IDを含んでいるかどうか。 |
owners 4 |
collection | in |
ファイルを所有するユーザ。 |
writers 4 |
collection | in |
ファイルを修正するためのパーミッションを持つユーザあるいはグループ。 |
readers 4 |
collection | in |
ファイルを読み込むためのパーミッションを持つユーザあるいはグループ。 |
sharedWithMe |
boolean | = , != |
ユーザの "Shared with me" コレクション内にあるファイル。 |
properties |
collection | has |
パブリックなカスタムファイルプロパティ。 |
appProperties |
collection | has |
プライベートなカスタムファイルプロパティ。 |
visibility |
string | = , '!=' |
ファイルの可視性レベル。 有効な値は、anyoneCanFind、anyoneWithLink,、domainCanFind、domainWithLink、および limitedです。 |
値のタイプ
値のタイプ | ノート |
---|---|
String |
シングルクォート ' で囲まれたもの。
クエリ内のシングルクォートを \' を用いてエスケープします、例えば、'Valentine\'s Day' 。
|
Boolean |
true あるいは false 。
|
Date |
RFC 3339形式、デフォルトのタイムゾーンは UTCです、例えば、2012-06-04T12:00:00-08:00 。
|
Number | 数値。 |
演算子
演算子 | ノート |
---|---|
contains |
ひとつの string のコンテンツが、もう一方に存在する。 |
= |
stringあるいは booleanのコンテンツが、もう一方と等しい。 |
!= |
stringあるいは booleanのコンテンツが、もう一方と等しくない。 |
< |
値が他のものより小さい。 |
<= |
値か他のもの以下である。 |
> |
値が他のものより遅い。 |
>= |
値が他のものより遅いか等しい。 |
in |
要素がコレクションに含まれている。 |
and |
両方の句にマッチするアイテムを返します。 |
or |
いずれかの句にマッチするアイテムを返します。 |
not |
検索句を否定します。 |
has |
コレクションがパラメータにマッチする要素を含んでいる。 |
複合句の場合、句を一緒にグループ化するためにカッコを使用することができます。 例えば:
modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')
この検索は、2012年6月4日以降に最後に修正された画像あるいは動画の MIMEタイプを伴うすべてのファイルを返します。
and
および or
演算子は左から右に評価されるので、カッコなしの上記の例は、2012年6月4日以降に修正された画像のみを返しますが、すべての動画も返すでしょう、2012年6月4日以前のものでさえも。
例
このページのすべての例は、エンコード解除された q
パラメータを示しています、ここで、name = 'hello'
は name+%3d+%27hello%27
としてエンコードされます。
クライアントライブラリは、このエンコーディングを自動的に処理します。
files.list
の例
名前 "hello" を伴うファイルを検索する
name = 'hello'
フォルダ固有の MIMEタイプを使用してフォルダを検索する
mimeType = 'application/vnd.google-apps.folder'
フォルダではないファイルを検索する
mimeType != 'application/vnd.google-apps.folder'
単語 "hello" および "goodbye" を含む名前を伴うファイルを検索する
name contains 'hello' and name contains 'goodbye'
単語 "hello" を含まない名前を伴うファイルを検索する
not name contains 'hello'
コンテンツ内に単語 "hello" を含むファイルを検索する
fullText contains 'hello'
コンテンツ内に単語 "hello" を含まないファイルを検索する
not fullText contains 'hello'
コンテンツ内に正確なフレーズ "hello world" を含むファイルを検索する
fullText contains '"hello world"'
fullText contains '"hello_world"'
"\" 文字("\authors" など)を含むクエリを伴うファイルを検索する
fullText contains '\\authors'
ユーザ "test@example.org" によって書き込み可能なファイルを検索する
'test@example.org' in writers
グループ "group@example.org" のメンバによって書き込み可能なファイルを検索する
'group@example.org' in writers
parents
コレクション内の ID 1234567
を検索する。
これは、その IDが 1234567
であるフォルダ内に直接配置されているすべてのファイルおよびフォルダを検索します。
'1234567' in parents
parents
コレクション内のエイリアス ID appDataFolder
を検索する。
これは、アプリケーションデータフォルダ下に直接配置されているすべてのファイルおよびフォルダを検索します。
'appDataFolder' in parents
ユーザ "test@example.org" および "test2@example.org" によって書き込み可能なファイルを検索する
'test@example.org' in writers and 'test2@example.org' in writers
ゴミ箱にある、テキスト "important" を含むファイルを検索する
fullText contains 'important' and trashed = true
2012年6月4日より後に修正されたファイルを検索する
modifiedTime > '2012-06-04T12:00:00' // default time zone is UTC
modifiedTime > '2012-06-04T12:00:00-08:00'
名前に "hello" を伴う、承認されたユーザと共有されたファイルを検索する
sharedWithMe and name contains 'hello'
値 8e8aceg2af2ge72e78
を伴う、カスタムファイルプロパティ additionalID
を伴うファイルを検索する
appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
他者あるいはドメインと共有されていない(個人のみ、あるいは、特定のユーザあるいはグループと共有されている)ファイルを検索する
visibility = 'limited'
コーパスを使用する
files.list
を呼び出すとき、検索は、選択されたコーパスによっても影響を受けます。
もし指定されていなければ、user
コーパスが使用されます。
G Suiteドメインに共有されているファイルといった、他のコーパスを検索するには、corpora
パラメータを使用します。
複数のコーパスが単一のクエリにて検索されるかもしれませんが、結合されたコーパスがあまりに大きい場合には、不完全な結果が返されるかもしれません。
もし、結果の incompleteSearch
フィールドが true
であるならば、すべてのドキュメントが検索されたのではありません。
クライアントライブラリを使用する
次の例は、画像ファイルの検索を実行する方法を示しています:
Java
String pageToken = null;
do {
FileList result = driveService.files().list()
.setQ("mimeType='image/jpeg'")
.setSpaces("drive")
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
for (File file : result.getFiles()) {
System.out.printf("Found file: %s (%s)\n",
file.getName(), file.getId());
}
pageToken = result.getNextPageToken();
} while (pageToken != null);
Python
page_token = None
while True:
response = drive_service.files().list(q="mimeType='image/jpeg'",
spaces='drive',
fields='nextPageToken, files(id, name)',
pageToken=page_token).execute()
for file in response.get('files', []):
# Process change
print 'Found file: %s (%s)' % (file.get('name'), file.get('id'))
page_token = response.get('nextPageToken', None)
if page_token is None:
break
PHP
$pageToken = null;
do {
$response = $driveService->files->listFiles(array(
'q' => "mimeType='image/jpeg'",
'spaces' => 'drive',
'pageToken' => $pageToken,
'fields' => 'nextPageToken, files(id, name)',
));
foreach ($response->files as $file) {
printf("Found file: %s (%s)\n", $file->name, $file->id);
}
$pageToken = $repsonse->pageToken;
} while ($pageToken != null);
.NET
string pageToken = null;
do
{
var request = driveService.Files.List();
request.Q = "mimeType='image/jpeg'";
request.Spaces = "drive";
request.Fields = "nextPageToken, files(id, name)";
request.PageToken = pageToken;
var result = request.Execute();
foreach (var file in result.Files)
{
Console.WriteLine(String.Format(
"Found file: {0} ({1})", file.Name, file.Id));
}
pageToken = result.NextPageToken;
} while (pageToken != null);
Ruby
files = drive_service.fetch_all(items: :files) do |page_token|
drive_service.list_files(q: "mimeType='image/jpeg'",
spaces: 'drive',
fields: 'nextPageToken, files(id, name)',
page_token: page_token)
end
for file in files
# Process change
puts "Found file: #{file.name} #{file.id}"
end
Node.js
var pageToken = null;
// Using the NPM module 'async'
async.doWhilst(function (callback) {
drive.files.list({
q: "mimeType='image/jpeg'",
fields: 'nextPageToken, files(id, name)',
spaces: 'drive',
pageToken: pageToken
}, function (err, res) {
if (err) {
// Handle error
console.error(err);
callback(err)
} else {
res.files.forEach(function (file) {
console.log('Found file: ', file.name, file.id);
});
pageToken = res.nextPageToken;
callback();
}
});
}, function () {
return !!pageToken;
}, function (err) {
if (err) {
// Handle error
console.error(err);
} else {
// All pages fetched
}
})
Objective-C
GTLRDriveQuery_FilesList *query = [GTLRDriveQuery_FilesList query];
query.q = @"mimeType='image/jpeg'";
query.spaces = @"drive";
query.fields = @"nextPageToken, files(id, name)";
[driveService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket,
GTLRDrive_FileList *files,
NSError *error) {
if (error == nil) {
for(GTLRDrive_File *file in files) {
NSLog(@"Found file: %@ (%@)", file.name, file.identifier);
}
} else {
NSLog(@"An error occurred: %@", error);
}
}];