2015-02-11 92 views
0

我正在创建一个应用程序来使用Python备份存储在Google Drive中的文件。我遇到的第一个问题是,由于某种原因,它只能在每个文件夹中列出最多100个文件。我想我用正确的范围(“https://www.googleapis.com/auth/drive”),这里是我使用的代码行列出文件夹Google Drive API每个文件夹最多只能列出100个文件

folder_contents = service.files().list(q="'%s' in parents" % folder['id']).execute() 

的内容有什么办法来改变上市文件数?我发现在这个线程Google Drive List API - not listed all the documents?,有一种方法可以做到这一点,但NumberToRetrieve不起作用。我试图在Drive API参考网页(https://developers.google.com/drive/v2/reference/files/list)中测试它,但它给我一个错误。当我从我的代码中请求列表(我是使用Drive API的新的)时,我也无法弄清楚如何设置这个参数。

在此先感谢。

编辑:我找到了一种方法来增加使用MaxResuls标志的文件数量。但它只允许列出多达1000个,这还不够。

回答

4

它是所有REST API分页输出列表的标准。 Drive API也不例外。您只需要在JSON响应中监视nextPageToken的存在并通过连续的页面进行递归。

注意:不要犯这样的错误,因为有些人认为小于MaxResults的响应是最后一页。你应该完全依靠nextPageToken。另外,一旦您的代码有分页工作,请考虑将maxResults设置恢复为默认值。我怀疑非默认值的测试不够好,也更容易出现超时。

+0

直接链接到它如何完成:http://stackoverflow.com/questions/22092402/python-google-drive-api-list-the-entire-drive-file-tree – 2015-11-03 04:37:21

0

查询的默认最大结果是100.必须使用pageToken/nextPageToken来重复它。请参阅Python Google Drive API - 列出整个驱动器文件树

0

“results = service.files()。list( pageSize = 1000,q =”'xxx'in parents“,fields =”nextPageToken,files(id ,name)“)。execute()”

这对我有效。