簡體   English   中英

有什么方法可以通過一個請求僅列出 Google Drive API 上根文件夾或根文件夾下任何級別的文件?

[英]Is there any way to list only files that are on root folder or any level under it on Google Drive API with one request?

我想要做的是從 Google Drive 文件創建一個本地文件樹(像緩存一樣工作),所以我不必每次需要文件信息時都發出 HTTP 請求(配額在 Google API 上有限制) .

我最好的方法是一次請求所有文件,所以我有一個沒有太多 HTTP 請求的巨大文件列表,我可以鏈接它們來創建樹。 它通過對文件做一些技巧來起作用,但問題是我得到的文件比我需要的多得多(收到了 9729 個,只有 1764 個有用),因為我無法想到一個有效的過濾器列表服務。 我正在下載所有文件(包括 sharedWithMe,垃圾除外,因為它有一個簡單的過濾器 Trashed trashed = false ,也只下載必要的字段),並且由於不必要的數據,它花費的時間比所需的時間長得多。

我只想獲取 MyDrive(根)文件夾下的文件(有些文件是 sharedWithMe 並且也在 MyDrive 下,我不能通過q = 'me' in owner使用q = 'me' in owner來簡單地忽略它們)。 換句話說,我只想獲取根級別的文件,作為根級別文件的子文件的文件等等。 有什么查詢可以做到嗎? 或者至少讓它更有效率?

注意:這不是 共享驅動器應用程序

我發現創建樹的最佳方法是:

  1. 請求所有文件夾的 files.list ( q: mimeType = 'application/vnd.google-apps.folder' ) 因為通常文件夾比文件少。 trashed = false也很有用。
  2. 創建丟棄所有無用文件夾的樹結構。
  3. 對於樹中的每個文件夾,獲取它們的 id,然后使用q = 'mimeType != 'application/vnd.google-apps.folder' and (folderId1' in parents or 'folderId2 in parents or ... or 'folderIdN' in parents) (注意過於復雜的查詢錯誤,主體尺寸太大[可能超過 25,000 個字符,不確定])。
  4. 完成樹的鏈接。

這樣做,會有一些無用的數據和一些請求,但下載的數據量比沒有任何q限制的列表文件少得多。

這個想法來自關於這個問題的答案的備選方案 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM