我使用此代码列出了使用 GAE SDK 和 google-api-python-client 的 Google Drive 阅读器的所有文件和文件夹。查询中的 reader 是一个应用引擎服务帐户:
page_token = None
param = {'q' : '"example@appspot.gserviceaccount.com" in readers'}
while True:
try:
page = service.files().list(**param).execute()
for each in page.get('items', []):
logging.info('File Id: %s' % each['title'])
page_token = page.get('nextPageToken')
if page_token:
param['pageToken'] = page_token
logging.info(param)
else :
break
except errors.HttpError, error:
logging.error('An error occurred: %s' %(error))
break
两页的项目总数约为 160 项。但是 while 循环永远不会停止。在“最后一个”页面项目之后,我不断收到 nextPageTokens,但下一页的项目列表是空的。
GAE SDK 日志可以在这里找到:https ://docs.google.com/file/d/0B9-mEcXX8BPaQUJZZmVkWGxiZFk/edit?usp=sharing
更新,循环停止但......
我为页面和项目添加了一些计数器。在包含 165 个文件夹和文件项的 135 页(前两页收到 165 个)之后,我收到了 None nextPageToken。所以它终于停止了。163 列表请求(页面)不报告任何项目。
读者可以访问根目录下的单个文件夹以及该文件夹下的所有子文件夹和文件。那么发生了什么。这是一个错误吗?