2011-09-09 13 views
0

Google Docs APIを使用して、スプレッドシートデータをXML、ひいてはJSONデータとして取得しようとしています。ブラウザにURL(http://spreadsheets.google.com/feeds/list/0Aizy-VIdLC0QdDNNRkpfVncxQzZRNG9fMVhueXVMenc/1/private/values)を入れて、Googleにログインしていなくてもデータを取得します。Google Docs APIからのデータフィード

jQuery Ajaxを試してみると、「ページが見つかりません」というエラーが表示されます。

$.get('http://spreadsheets.google.com/feeds/list/0Aizy-VIdLC0QdDNNRkpfVncxQzZRNG9fMVhueXVMenc/1/private/values', function(data) { 
    console.log(data) 
}); 

私は、同一生成元ポリシーは、Ajaxのエラーの原因かもしれないと推測していますので、私はPHPで試してみましたが、私はエラーを取得します。

echo file_get_contents("http://spreadsheets.google.com/feeds/list/0Aizy-VIdLC0QdDNNRkpfVncxQzZRNG9fMVhueXVMenc/1/private/values"); 

Google DocsスプレッドシートのデータをWebページで使用するためのJSONオブジェクトに変換することを目指しています。

このエラーを修正するにはどうすればよいですか?

+1

ブラウザで私に「見つからない」というメッセージが表示される... – lonesomeday

答えて

5

スプレッドシートのデータを取得できるようにするには、ログインする必要があります。

ログイン中にhttp://spreadsheet.google.com/.../private/valuesにアクセスすると、意味のあるXMLページが表示されます。ただし、ログインしていないときに同じページを読み込もうとすると、「ページが見つかりません」という結果になります。

JQueryレスポンスのレスポンスヘッダによれば、このエラーの唯一の原因はログインしていません(下記参照)。

WWW-Authenticate: No credentials were included in your request. 

関連ドキュメントについては、The Protocol Guideを参照してください。

+1

URLにアクセスするには誰でもログインする必要がありますが、ログインする必要があります。ログインしないようにするには、私はちょうど私のスクリプトがデータを読んで、ユーザーが関与することなくそれを使用するようにしたい。これは可能ですか、私は議定書のガイドを見てきました。エンドユーザーがログインしているように見えます。これは私が望むものではありません。 –

+0

@Billy - AuthSubを使用して、サーバー側のAPI経由でアプリケーションをログインします。http://code.google.com/apis/accounts/docs/AuthSub.html – tvanfosson

0

URL文字列をダブルチェックすると、理由はsame origin policyになる可能性があります。ブラウザの厳しいセキュリティポリシーのため、別のドメインからデータを取得することはできません。

これを回避したい場合は、JSONPのような別の方法を使用する必要があります。

Ajax documentation pageでjQueryでJSONPを実装する方法の詳細を読むことができます。

関連する問題