単一のIDのドキュメントエントリを取得するDocsClient.get_resource_by_id関数があります。複数のドキュメントIDを指定して複数のドキュメントエントリを(1回の呼び出しで)取得する同様の方法はありますか?
私のアプリケーションは、IDを持っている複数のファイルからコンテンツを効率的にダウンロードする必要があります。適切なダウンロードURLにアクセスするには、ドキュメントエントリを取得する必要があります(URLを手動で作成することもできますが、APIドキュメントでは推奨されていません)。ドキュメントタイプがあることも有利であり、スプレッドシートの場合、個々のワークシートにアクセスするためにドキュメントエントリが必要です。
全体として、I / O待機を削減しようとしているので、ドキュメントIDルックアップをバンドルできる方法があれば、I/O費用をいくらか節約できます。
[編集]AddQueryをgdatav2.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)