2015-09-17 46 views
1

我正在使用適用於Python的Google雲端硬盤API客戶端庫。Google Drive API - 僅爲「我的雲端硬盤」提取元數據

我想爲「我的雲端硬盤」中的當前文件提取元數據。但是,使用service.files().list().execute()會產生一個列表,不僅包括當前在「我的雲端硬盤」中顯示的文件,還包括以前刪除的文件以及存儲在「Google相冊」和「最近」 。

如何過濾接收到的文件列表以僅檢索將下載到安裝了Google雲端硬盤同步的客戶端上的文件?

回答

1

更新

我已經找到一個更好的辦法讓「我的雲端硬盤」的項目清單。而不是file.list,change.list更符合我們的使用情況。

通過設置includeDeletedincludeSubscribedfalsechange.list返回認爲是嚴格定位於用戶的雲端硬盤文件的更改列表(沒有[近期與我共享)。但是,它確實包含了丟棄的項目。

由於我們只需要篩選標記爲thrashed的項目,因此該響應更容易處理。它仍然不完美,但至少它爲我們節省了構建樹的麻煩。

原來的答案

,我發現是query'me' in owners and trashed = false最接近的方式。此查詢將返回「我的雲端硬盤」中的所有文件,並且(不幸地)返回「與我共享」中的一些文件。然後,您可以從root文件夾構建一棵樹,並刪除那些孤立的樹。

另一方面,最簡潔的方法是查詢'root' in parents並逐層遍歷樹。儘管如此,效率並不高。

注意:查詢not sharedWithMesharedWithMe = false結果400,否則它將是最好的解決方案。

0

您可以同時使用父資源和子資源,以清楚地標識「我的雲端硬盤」的文件夾內容。此外,您可以使用files.list方法,同時包含查詢以排除已刪除的項目。只是包括「Q」參數,並列出作爲查詢字符串:

param = {} 
if page_token: 
    param['pageToken'] = page_token 
param['q'] = 'trashed = false' 
files = service.files().list(**param).execute() 

您可以找到可用值的更多信息用於查詢here

相關問題