Z tego przewodnika dowiesz się, jak Google Drive API obsługuje kilka sposobów wyszukiwania plików i folderów.
Aby zwrócić wszystkie lub niektóre pliki i foldery użytkownika Dysku, możesz użyć metody list w zasobie
files. Możesz też użyć list
metody, aby pobrać fileId wymagany w przypadku niektórych metod zasobów (np. metod
get i update).
Używanie parametru fields
Jeśli chcesz określić pola, które mają być zwracane w odpowiedzi, możesz ustawić
fields parametr
systemowy
w dowolnej metodzie zasobu files. Jeśli pominiesz parametr fields, serwer zwróci domyślny zestaw pól właściwy dla danej metody. Na przykład metoda
list zwraca tylko pola kind, id,
name, mimeType i resourceKey dla każdego pliku. Aby zwrócić inne
pola, przeczytaj sekcję Zwracanie określonych pól.
Pobieranie pliku według identyfikatora
Aby pobrać plik, użyj metody get w zasobie
files z parametrem ścieżki fileId.
Jeśli nie znasz identyfikatora pliku, możesz wyświetlić listę wszystkich plików za pomocą list
metody.
Metoda zwraca plik jako instancję zasobu files. Jeśli podasz parametr alt=media, odpowiedź będzie zawierać treść pliku w treści odpowiedzi. Aby pobrać plik blob, przeczytaj sekcję Pobieranie treści pliku blob.
Aby potwierdzić ryzyko pobrania znanego złośliwego oprogramowania lub innych
szkodliwych plików, ustaw
acknowledgeAbuse parametr zapytania na true. To pole ma zastosowanie tylko wtedy, gdy ustawiony jest parametr alt=media, a użytkownik jest właścicielem pliku lub organizatorem dysku współdzielonego, na którym znajduje się plik.
Wyświetlanie listy wszystkich plików i folderów na Moim dysku
Aby zwrócić wszystkie pliki i foldery na Moim dysku bieżącego użytkownika, użyj metody list bez żadnych parametrów.
Poniższe polecenie curl pokazuje, jak wyświetlić listę wszystkich plików:
curl -X GET \
'https://www.googleapis.com/drive/v3/files' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
Zastąp ACCESS_TOKEN autoryzowanym tokenem dostępu OAuth 2.0.
Wyszukiwanie określonych plików i folderów na Moim dysku
Aby wyszukać określony zestaw plików lub folderów na Moim
dysku bieżącego użytkownika, użyj pola ciągu zapytania q z metodą list, aby filtrować pliki do zwrócenia przez połączenie
co najmniej 1 wyszukiwanego hasła.
Składnia ciągu zapytania składa się z tych 3 części:
query_term operator values
Gdzie:
query_termto wyszukiwane hasło lub pole, w którym chcesz wyszukać.operatorokreśla warunek dla wyszukiwanego hasła.valuesto konkretne wartości, których chcesz użyć do filtrowania wyników wyszukiwania.
Na przykład ten ciąg zapytania filtruje wyszukiwanie, aby zwracać tylko foldery, ustawiając typ MIME:
mimeType = 'application/vnd.google-apps.folder'
Aby wyświetlić wszystkie wyszukiwane hasła dotyczące plików, przeczytaj sekcję Wyszukiwane hasła dotyczące plików.
Aby wyświetlić wszystkie operatory zapytań, których możesz użyć do utworzenia zapytania, przeczytaj sekcję Operatory zapytań.
Przykłady ciągów zapytania
W tabeli poniżej znajdziesz przykłady podstawowych ciągów zapytania. Rzeczywisty kod różni się w zależności od biblioteki klienta używanej do wyszukiwania.
Aby zapytanie działało prawidłowo, musisz też użyć znaków specjalnych w nazwach plików. Jeśli na przykład nazwa pliku zawiera zarówno apostrof
(') jak i ukośnik odwrotny ("\"), użyj ukośnika odwrotnego, aby je pominąć: name
contains 'quinn\'s paper\\essay'.
| Co chcesz wyszukać | Przykład |
|---|---|
Operator dopasowania ciągu (contains) |
|
| Pliki zawierające słowo „hello” | fullText contains 'hello' |
| Pliki zawierające dokładną frazę „hello world” | fullText contains '"hello world"' |
| Pliki z zapytaniem zawierającym znak „\” (np. „\authors”) | fullText contains '\\authors' |
| Pliki, których nazwa zawiera „budget” | name contains 'budget' |
Operatory równości i nierówności (=, !=) |
|
| Pliki o nazwie „hello” | name = 'hello' |
| Pliki, które są folderami | mimeType = 'application/vnd.google-apps.folder' |
| Pliki, które nie są folderami | mimeType != 'application/vnd.google-apps.folder' |
| Pliki oznaczone gwiazdką | starred = true |
| Pliki w koszu | trashed = true |
| Pliki, które nie są w koszu | trashed = false |
| Skróty wskazujące konkretny identyfikator pliku | shortcutDetails.targetId = '1987654321' |
| Pliki, które nie zostały udostępnione nikomu ani żadnej domenie (prywatne lub udostępnione konkretnym użytkownikom lub grupom) | visibility = 'limited' |
| Pliki, do których dostęp ma każdy, kto ma link | visibility = 'anyoneWithLink' |
| Pliki, które można publicznie znaleźć w internecie | visibility = 'anyoneCanFind' |
Operatory porównania (>, >=, <, <=) |
|
| Pliki zmodyfikowane po określonej dacie (domyślna strefa czasowa to UTC) | modifiedTime > '2012-06-04T12:00:00' |
| Pliki utworzone po 1 stycznia 2023 r. | createdTime > '2023-01-01T00:00:00' |
| Pliki zmodyfikowane przed 1 stycznia 2023 r. | modifiedTime < '2023-01-01T00:00:00' |
Operator przynależności do kolekcji (in) |
|
Pliki w kolekcji (np. identyfikator folderu w kolekcji parents) |
'1234567' in parents |
| Pliki w folderze danych aplikacji | 'appDataFolder' in parents |
| Pliki, których właścicielem jest użytkownik „test@example.org” | 'test@example.org' in owners |
| Pliki, do których użytkownik „test@example.org” ma uprawnienia do zapisu | 'test@example.org' in writers |
| Pliki, do których członkowie grupy „group@example.org” mają uprawnienia do zapisu | 'group@example.org' in writers |
| Pliki, do których użytkownik „test@example.org” ma uprawnienia do odczytu | 'test@example.org' in readers |
Operator dopasowania kolekcji (has) |
|
| Pliki z niestandardową właściwością pliku widoczną dla wszystkich aplikacji | properties has { key='mass' and value='1.3kg' } |
| Pliki z niestandardową właściwością pliku prywatną dla aplikacji wysyłającej żądanie | appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' } |
| Pliki, które mają niestandardową właściwość pliku z kluczem „department” (niezależnie od wartości) | properties has { key='department' } |
Operatory logiczne (and, or, not) |
|
| Pliki, których nazwa zawiera słowa „hello” i „goodbye” | name contains 'hello' and name contains 'goodbye' |
| Pliki, których nazwa nie zawiera słowa „hello” | not name contains 'hello' |
| Pliki, które zawierają tekst „important” i są w koszu | fullText contains 'important' and trashed = true |
| Pliki, które nie zawierają słowa „hello” | not fullText contains 'hello' |
| Pliki graficzne lub wideo zmodyfikowane po określonej dacie | modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/') |
| Pliki udostępnione autoryzowanemu użytkownikowi, których nazwa zawiera „hello” | sharedWithMe and name contains 'hello' |
| Pliki, które są folderami lub skrótami | mimeType = 'application/vnd.google-apps.folder' or mimeType = 'application/vnd.google-apps.shortcut' |
| Pliki o nazwie „Project Plan”, które nie są w koszu | name = 'Project Plan' and trashed = false |
| Pliki w określonym folderze, które nie są w koszu | '1234567' in parents and trashed = false |
Filtrowanie wyników wyszukiwania za pomocą biblioteki klienta
Poniższy przykładowy kod pokazuje, jak użyć biblioteki klienta do filtrowania wyników wyszukiwania według nazw plików i identyfikatorów plików JPEG. Ten przykład używa wyszukiwanego hasła mimeType, aby zawęzić wyniki do plików typu image/jpeg. Ustawia też
spaces na drive, aby dodatkowo zawęzić wyszukiwanie do miejsca na Dysku
Dysku. Gdy nextPageToken zwraca null, nie ma więcej wyników.
Java
Python
Node.js
PHP
Wyświetlanie listy plików w folderze publicznym
Aby wyszukać lub wyświetlić listę plików w folderze udostępnionym publicznie (gdzie dostęp jest ustawiony na
"Każdy, kto ma link" lub "Publiczny w internecie"), użyj metody list w zasobie files z parametrem zapytania q ustawionym na filtrowanie według identyfikatora folderu w kolekcji parents:
'FOLDER_ID' in parents and trashed = false
Podczas wyświetlania listy plików w folderze publicznym możesz uwierzytelniać żądania za pomocą klucza interfejsu
API zamiast danych logowania użytkownika OAuth 2.0. Jeśli folder znajduje się na dysku współdzielonym, musisz też ustawić w żądaniu supportsAllDrives=true i includeItemsFromAllDrives=true.
Poniższe przykłady kodu pokazują, jak wyświetlić listę plików w folderze publicznym:
Node.js
/**
* List files in a public folder using an API key.
* @param {string} folderId The ID of the public folder.
* @param {string} apiKey Your Google Cloud API key.
* @return {Promise<Array>} The list of files.
*/
async function listPublicFolder(folderId, apiKey) {
const {google} = require('googleapis');
const service = google.drive({version: 'v3', auth: apiKey});
try {
const response = await service.files.list({
q: `'${folderId}' in parents and trashed = false`,
fields: 'nextPageToken, files(id, name, mimeType)',
supportsAllDrives: true,
includeItemsFromAllDrives: true,
});
const files = response.data.files;
console.log('Files:');
for (const file of files) {
console.log(`${file.name} (${file.id})`);
}
return files;
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
curl
curl -G \
'https://www.googleapis.com/drive/v3/files' \
--data-urlencode "q='FOLDER_ID' in parents and trashed = false" \
--data-urlencode 'supportsAllDrives=true' \
--data-urlencode 'includeItemsFromAllDrives=true' \
--data-urlencode 'fields=nextPageToken,files(id,name,mimeType)' \
--data-urlencode 'key=API_KEY' \
-H 'Accept: application/json'
Zastąp te elementy:
- FOLDER_ID: identyfikator folderu publicznego.
- API_KEY: klucz interfejsu API Twojego projektu.
Wyszukiwanie plików z właściwościami niestandardowymi
Aby wyszukać pliki z niestandardową właściwością pliku, użyj wyszukiwanego hasła properties lub appProperties z kluczem i wartością. Aby na przykład wyszukać niestandardową właściwość pliku, która jest prywatna dla aplikacji wysyłającej żądanie, o nazwie additionalID i wartości 8e8aceg2af2ge72e78:
appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
Więcej informacji znajdziesz w artykule Dodawanie niestandardowych właściwości pliku.
Wyszukiwanie plików według etykiety lub wartości pola
Aby wyszukać pliki z określonymi etykietami, użyj wyszukiwanego hasła labels z konkretnym identyfikatorem etykiety.
Aby wyszukać pliki, do których zastosowano określoną etykietę:
'labels/LABEL_ID' in labels
Aby wyszukać pliki, do których nie zastosowano określonej etykiety:
not 'labels/LABEL_ID' in labels
Aby wyszukać pliki na podstawie określonej wartości pola etykiety:
labels/LABEL_ID.FIELD_ID = 'VALUE'
Jeśli operacja się uda, treść odpowiedzi będzie zawierała wszystkie instancje plików pasujące do zapytania. Więcej informacji znajdziesz w artykule Wyszukiwanie plików z określoną etykietą lub wartością pola.
Wyszukiwanie w korpusach
Domyślnie podczas używania metody list w parametrze zapytania corpora
ustawiana jest kolekcja elementów user. Aby przeszukać inne kolekcje elementów, np. udostępnione w domain, musisz jawnie ustawić parametr corpora.
W jednym zapytaniu możesz przeszukać wiele korpusów. Jeśli jednak połączone korpusy są zbyt duże, interfejs API może zwrócić niepełne wyniki. Sprawdź pole
incompleteSearch
w treści odpowiedzi. Jeśli ma wartość true, oznacza to, że pominięto niektóre dokumenty. Aby rozwiązać ten problem, zawęź corpora, aby używać user lub drive.
Gdy używasz parametru zapytania
orderBy w metodzie list, unikaj używania klucza createdTime w przypadku zapytań dotyczących
dużych kolekcji elementów, ponieważ wymaga to dodatkowego przetwarzania i może spowodować
przekroczenie limitu czasu lub inne problemy. W przypadku sortowania według czasu w dużych kolekcjach elementów możesz użyć zamiast tego modifiedTime, ponieważ jest on zoptymalizowany do obsługi tych zapytań.
Na przykład ustaw orderBy na modifiedTime (lub modifiedTime desc).
Jeśli pominiesz parametr zapytania orderBy, nie będzie domyślnego porządku sortowania, a elementy będą zwracane w dowolnej kolejności.
Powiązane artykuły
- Wyszukiwanie dysków współdzielonych
- Wyszukiwane hasła i operatory
- Obsługiwane typy MIME w Google Workspace i na Dysku Google
- Role i uprawnienia
- Wyszukiwanie plików z określoną etykietą lub wartością pola