使用google drive rest

时间:2017-10-03 13:05:37

标签: google-drive-api

我正在尝试获取在父目录下创建的所有文件。父目录有很多子目录,后跟这些目录中的文件。

parent
--- sub folder1
    --- file1
    --- file2

目前我正在抓取子文件夹的所有ID并构建查询,例如父项中的 q:'subfolder1id'或父项中的'subfolder2id'以查找文件列表。然后我分批发布这些。如果我有100个文件夹,我会发出10个搜索查询,批量大小为10。

有没有更好的方法使用google drive rest api查询文件,这将通过一个查询获取所有文件?

2 个答案:

答案 0 :(得分:3)

以下是您问题的answer

与您的方案相同的想法:

folderA____ folderA1____folderA1a
       \____folderA2____folderA2a
                    \___folderA2b

我认为你可以从中获得3个替代答案。

  

替代方案1.递归

     

诱惑就是列出folderA的子节点   孩子们是文件夹,递归地列出他们的孩子,冲洗,   重复。在极少数情况下,这可能是最好的   方法,但对大多数人来说,它有以下问题: -

     
      
  • 为每个子文件夹执行服务器往返是非常耗时的。这当然取决于树的大小,所以如果   你可以保证树的大小很小,也可以。
  •   
     

备选方案2.共同父母

     

如果您的应用程序正在创建所有文件,则效果最佳(即。   您正在使用drive.file范围)。以及文件夹层次结构   在上面,创建一个名为say" MyAppCommonParent"的虚拟父文件夹。如   您还可以将每个文件创建为其特定文件夹的子文件   让它成为MyAppCommonParent的孩子。这变得更多   直观的,如果你还记得将文件夹视为标签。你现在可以   只需查询MyAppCommonParent in parents即可轻松检索所有后缀。

     

备用3.文件夹优先

     

首先获取所有文件夹。是的,所有这些。一旦你拥有它们   在内存中,您可以爬过其父属性并构建   您的树结构和文件夹ID列表。然后你可以做一个   files.list?q='folderA' in parents or 'folderA1' in parents or 'folderA1a' in parents....使用这种技术,你可以得到   一切都在两个http电话中。

     

备选方案2是最有效的,但只有在你有效的情况下才有效   控制文件创建。备选方案3通常更有效   比备选方案1,但可能有一些小树的大小,其中1   是最好的。

答案 1 :(得分:1)

c:/CMMS.