限制使用Google Drive API

时间:2015-10-26 10:39:59

标签: python google-drive-api

我认识的人想要一个程序,列出某个文件夹中文件的所有谷歌驱动器ID。所以我查看了谷歌网站,了解了如何在python中做到这一点并想出了一个程序。问题是似乎有一个限制,但我无法理解:

如果我使用此代码:

credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
service = discovery.build('drive', 'v2', http=http)

par = {'maxResults':1000}
results = service.files().list(**par).execute()
items = results.get('items', [])
folders = {}
if not items:
    print('No files found.')
else:
    print("There is "+str(len(items))+" items")

我在google开发者网站的示例中使用了get_credentials(),问题是我确定我正在访问的驱动器有超过1000个文件,但程序仍告诉我{{1 ,这有什么方法可以限制为460?

2 个答案:

答案 0 :(得分:2)

我不做Python,但我认为你错过了' nextPage'逻辑。请参阅(至少在Java中)该列表返回一个页面'结果一次,所以必须有另一个循环来检索下一页(只要有一个可用),如:

  void list(String prnId) {
      String qryClause = "'me' in owners and '" + prnId + "' in parents";
      Drive.Files.List qry = mGOOSvc.files().list()
          .setQ("'me' in owners and '" + prnId + "' in parents")
          .setFields("items, nextPageToken");
      String npTok = null;
      do {
        FileList gLst = qry.execute();
        if (gLst != null) {
          // BINGO - file list, but only one page worth
          npTok = gLst.getNextPageToken();  //GET POINTER TO THE NEXT PAGE
          qry.setPageToken(npTok);
        }
      } while (npTok != null && npTok.length() > 0);
  }

请参阅' do while()'循环和' BINGO '评论?尝试将其实施到您的PY代码中(不要忘记要求' nextPageToken'来获取它)。

此外,this page底部还有一个很棒的工具 TryIt! ,您可以在其中测试所有类型的内容。

祝你好运

答案 1 :(得分:1)

我有同样的问题,即使我将maxResults设置为1000 ......

,我仍然会收到460个结果

根据文档:“maxResults:要返回的最大文件数。可接受的值为0到1000(含)。(默认值:100)”

https://developers.google.com/drive/v2/reference/files/list