本指南說明 Google 雲端硬碟 API 支援的幾種檔案和資料夾搜尋方式。
您可以在 files 資源上使用 list 方法,傳回雲端硬碟使用者所有或部分檔案和資料夾。list 方法也可用於擷取部分資源方法 (例如 get 方法和 update 方法) 所需的 fileId。
使用 fields 參數
如要指定要在回應中傳回的欄位,可以使用 files 資源的任何方法,設定 fields system 參數。如果省略 fields 參數,伺服器會傳回方法專屬的預設欄位集。舉例來說,list 方法只會傳回每個檔案的 kind、id、name、mimeType 和 resourceKey 欄位。如要傳回不同欄位,請參閱「傳回特定欄位」。
取得檔案
如要取得檔案,請在 files 資源上使用 get 方法,並提供 fileId 路徑參數。如果您不知道檔案 ID,可以使用 list 方法列出所有檔案。
這個方法會以 files 資源的執行個體形式傳回檔案。如果您提供 alt=media 查詢參數,回應主體就會包含檔案內容。如要下載或匯出檔案,請參閱「下載及匯出檔案」。
如要確認下載已知惡意軟體或其他濫用檔案的風險,請將 acknowledgeAbuse 查詢參數設為 true。只有在設定 alt=media 參數,且使用者是檔案擁有者,或檔案所在共用雲端硬碟的召集人時,這個欄位才適用。
搜尋目前使用者「我的雲端硬碟」中的所有檔案和資料夾
使用不含任何參數的 list 方法,即可傳回所有檔案和資料夾。
GET https://www.googleapis.com/drive/v3/files
搜尋目前使用者「我的雲端硬碟」中的特定檔案或資料夾
如要搜尋特定檔案或資料夾,請使用 q 欄位中的查詢字串,並搭配 list 方法來篩選檔案,藉此傳回一或多個搜尋字詞的組合。
查詢字串語法包含下列三部分:
query_term operator values
在此情況下:
query_term是要搜尋的查詢字詞或欄位。operator指定查詢字詞的條件。values是要用來篩選搜尋結果的特定值。
舉例來說,下列查詢字串會設定 MIME 類型,將搜尋結果篩選為僅傳回資料夾:
q: mimeType = 'application/vnd.google-apps.folder'
如要查看所有檔案查詢字詞,請參閱檔案專屬查詢字詞。
如要查看可用於建構查詢的所有查詢運算子,請參閱「查詢運算子」。
查詢字串範例
下表列出一些基本查詢字串的範例。實際程式碼會因您用於搜尋的用戶端程式庫而異。
此外,您也必須逸出檔案名稱中的特殊字元,確保查詢作業正常運作。舉例來說,如果檔案名稱同時包含單引號 (') 和反斜線 ("\") 字元,請使用反斜線逸出這些字元: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' |
| 在指定日期後修改的檔案 (預設時區為世界標準時間) | 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,進一步將搜尋範圍縮小至 Google 雲端硬碟空間。nextPageToken 傳回 null 時,表示沒有更多結果。
Java
Python
Node.js
PHP
搜尋具有自訂檔案屬性的檔案
如要搜尋具有自訂檔案屬性的檔案,請使用 properties 或 appProperties 搜尋查詢字詞,並提供鍵和值。舉例來說,如要搜尋名為 additionalID 的要求應用程式專屬的自訂檔案屬性,且值為 8e8aceg2af2ge72e78,請使用下列程式碼:
appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
詳情請參閱「新增自訂檔案屬性」。
搜尋含有特定標籤或欄位值的檔案
如要搜尋具有特定標籤的檔案,請使用 labels 搜尋查詢字詞和特定標籤 ID。例如:'labels/LABEL_ID' in
labels。如果成功,回應主體會包含套用標籤的所有檔案例項。
如要搜尋沒有特定標籤 ID 的檔案,請輸入 Not
'labels/LABEL_ID' in labels。
您也可以根據特定欄位值搜尋檔案。舉例來說,如要搜尋含有文字值的檔案,請使用 labels/LABEL_ID.text_field_id ='TEXT'。
詳情請參閱依特定標籤或欄位值搜尋檔案。
搜尋語料庫
呼叫 list 方法的搜尋會預設使用 user 的 corpora。如要搜尋其他語料庫 (例如與 domain 共用的檔案),請設定 corpora 參數。
單一查詢可搜尋多個語料庫,但如果合併的語料庫過大,可能會傳回不完整的結果。如果回應主體中包含 incompleteSearch,表示並非所有文件都已傳回。true如果發生這種情況,請選擇其他語料庫 (例如 user 或 drive),縮小查詢範圍。