存在一个 DocsClient.get_resource_by_id 函数来获取单个 ID 的文档条目。在给定多个文档 ID 的情况下,是否有类似的方法来获取(在单个调用中)多个文档条目?
我的应用程序需要有效地从我拥有 ID 的多个文件中下载内容。我需要获取文档条目以访问适当的下载 URL(我可以手动构建 URL,但在 API 文档中不鼓励这样做)。具有文档类型也是有利的,并且在电子表格的情况下,需要文档条目才能访问各个工作表。
总的来说,我正在尝试减少 I/O 等待,所以如果有一种方法可以捆绑文档 ID 查找,它将为我节省一些 I/O 费用。
[编辑] 将 AddQuery 反向移植到 gdata v2.0(来自 Alain 的解决方案):
client = DocsClient()
# ...
request_feed = gdata.data.BatchFeed()
request_entry = gdata.data.BatchEntry()
request_entry.batch_id = gdata.data.BatchId(text=resource_id)
request_entry.batch_operation = gdata.data.BATCH_QUERY
request_feed.add_batch_entry(entry=request_entry, batch_id_string=resource_id, operation_string=gdata.data.BATCH_QUERY)
batch_url = gdata.docs.client.RESOURCE_FEED_URI + '/batch'
rsp = client.batch(request_feed, batch_url)
rsp.entry
是 BatchEntry 对象的集合,它们似乎引用了正确的资源,但与我通常通过client.get_resource_by_id()
.
我的解决方法是将gdata.data.BatchEntry
对象转换为类似的gdata.docs.data.Resource
对象:
entry = atom.core.parse(entry.to_string(), gdata.docs.data.Resource)