我使用请求部分资源修改了https://developers.google.com/drive/v2/reference/files/list示例以获取所有文件项的列表。
def retrieve_all_files(service, fields = None):
"""Retrieve a list of File resources.
Args:
service: Drive API service instance.
fields: The fields (of each files Resource item!), e.g. 'id,title'
if not passed, get everything.
Returns:
List of File resources.
"""
result = []
page_token = None
while True:
try:
param = {}
if fields:
param['fields'] = 'nextPageToken,items(' + fields + ')'
if page_token:
param['pageToken'] = page_token
files = service.files().list(**param).execute()
result.extend(files['items'])
page_token = files.get('nextPageToken')
if not page_token:
break
except errors.HttpError, error:
print 'An error occurred: %s' % error
break
return result
在我的测试云端硬盘文件夹中,我有一个设置了描述字符串的文件。我跑的时候
retrieve_all_files(drive_service)
没有设置fields参数(所以得到所有东西),确实在项目列表中,文件看起来很好:
[{u'alternateLink': u'...',...
u'description': u'Description',
u'id': u'...',...},...]
但正在运行
retrieve_all_files(drive_service, fields='id,description,title')
产生一个列表,其中没有任何项具有'description'属性。并非所有文件都设置了'description'属性;这就是为什么即使从具有该属性的项目中部分资源响应也省略了该字段?我不确定这是否是我没想到的未记录的功能或错误。
答案 0 :(得分:1)
我能够重现你的问题。使用授权范围列表时:
https://www.googleapis.com/auth/drive
应该是完全访问权限,我无法获取返回的描述字段。但是,我发现如果我也包括范围:
https://www.googleapis.com/auth/drive.appdata
描述字段将正确返回。
您能否在结束时确认将上述内容添加到您的范围可以解决问题?似乎是谷歌的一个错误。
答案 1 :(得分:1)
这被证实是一个错误,几天后就可以修复。