我正在使用適用於Python的Google雲端硬盤API客戶端庫。Google Drive API - 僅爲「我的雲端硬盤」提取元數據
我想爲「我的雲端硬盤」中的當前文件提取元數據。但是,使用service.files().list().execute()會產生一個列表,不僅包括當前在「我的雲端硬盤」中顯示的文件,還包括以前刪除的文件以及存儲在「Google相冊」和「最近」 。
如何過濾接收到的文件列表以僅檢索將下載到安裝了Google雲端硬盤同步的客戶端上的文件?
我正在使用適用於Python的Google雲端硬盤API客戶端庫。Google Drive API - 僅爲「我的雲端硬盤」提取元數據
我想爲「我的雲端硬盤」中的當前文件提取元數據。但是,使用service.files().list().execute()會產生一個列表,不僅包括當前在「我的雲端硬盤」中顯示的文件,還包括以前刪除的文件以及存儲在「Google相冊」和「最近」 。
如何過濾接收到的文件列表以僅檢索將下載到安裝了Google雲端硬盤同步的客戶端上的文件?
更新
我已經找到一個更好的辦法讓「我的雲端硬盤」的項目清單。而不是file.list
,change.list
更符合我們的使用情況。
通過設置includeDeleted
和includeSubscribed
爲false
,change.list
返回認爲是嚴格定位於用戶的雲端硬盤文件的更改列表(沒有[近期和與我共享)。但是,它確實包含了丟棄的項目。
由於我們只需要篩選標記爲thrashed的項目,因此該響應更容易處理。它仍然不完美,但至少它爲我們節省了構建樹的麻煩。
原來的答案
,我發現是query爲'me' in owners and trashed = false
最接近的方式。此查詢將返回「我的雲端硬盤」中的所有文件,並且(不幸地)返回「與我共享」中的一些文件。然後,您可以從root
文件夾構建一棵樹,並刪除那些孤立的樹。
另一方面,最簡潔的方法是查詢'root' in parents
並逐層遍歷樹。儘管如此,效率並不高。
注意:查詢not sharedWithMe
或sharedWithMe = false
結果400,否則它將是最好的解決方案。
您可以同時使用父資源和子資源,以清楚地標識「我的雲端硬盤」的文件夾內容。此外,您可以使用files.list方法,同時包含查詢以排除已刪除的項目。只是包括「Q」參數,並列出作爲查詢字符串:
param = {}
if page_token:
param['pageToken'] = page_token
param['q'] = 'trashed = false'
files = service.files().list(**param).execute()
您可以找到可用值的更多信息用於查詢here。