2012-04-12 13 views
2

Google Docs API用のPythonクライアントを使用して特定のコレクションのコンテンツをクエリするにはどうすればよいですか? これは、私が来てどのくらいです:Google Docs APIのPythonクライアントでのクエリーコレクションのコンテンツ

client = gdata.docs.service.DocsService() 
client.ClientLogin('myuser', 'mypassword') 

FOLDER_FEED1 = "/feeds/documents/private/full/-/folder" 
FOLDER_FEED2 = "/feeds/default/private/full/folder%3A" 

feed = client.Query(uri=FOLDER_FEED1 + "?title=MyFolder&title-exact=true") 
full_id = feed.entry[0].resourceId.text 
(res_type, res_id) = full_id.split(":") 

feed = client.Query(uri=FOLDER_FEED2 + res_id + "/contents") 

for entry in feed.entry:. 
    print entry.title.text 

Client.Queryへの最初の呼び出しが成功し、有効なリソースIDを提供するようです。 2番目の呼び出しは、しかし、返されます。それは、この作業を取得するために

{'status': 400, 'body': 'Invalid request URI', 'reason': 'Bad Request'} 
  • がどのように修正することができますか?

答えて

1

自分でURIを生成してクエリを使用するのではなく、client.GetResources(entry.content.src)を呼び出すのがはるかに簡単です。

あなたの場合、client.GetResources(feed.entry[0].content.src)です。

+0

フィードバックいただきありがとうございます。 GetResources()は、現在使用しているクラス 'DocsService'ではなく、クラス 'DocsClient'のメソッドのようです。私は2つの質問があると思います:1)どのように2つのオブジェクト間で状態(すなわち認可)を共有するので、最初にQuery()を実行し、提案どおりにGetResources()を続けることができます。 DocsClientとDocsServiceが異なるクラスである理由、つまり関係は何ですか?これらのクラスのどちらを使用する必要がありますか? – Irwin

+0

DocsServiceを使用すべきではありません。非推奨であり、サポートされていません。私は強くあなたが移動することをお勧めします。 –

+0

ありがとうアリ、それは役に立つ情報です。ドキュメントのどこかでこれを言えるかもしれませんか? – Irwin