2012-04-10 26 views
2

現在、GoogleスプレッドシートをExcel形式で取得し、xlsファイルをファイルシステムに保存するアプリケーションがあります。 riaforgeのColdFusion google APIラッパー(http://cfgoogle.riaforge.org/)を使用しています。cfhttpを使用して公開スプレッドシートを取得する

ラッパーは、Googleアカウントで認証してから、cfhttpを使用してバイナリ形式でファイルをダウンロードしています。ドキュメントを取得するためのURLは次のようになります。 https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=#urlEncodedFormat(arguments.id)#&fmcmd=#spreadSheetFormat(arguments.format)#

公開アプリケーションのドキュメントURLを直接ダウンロードするようにアプリの動作を変更したいのですが、私が公開ドキュメントのURLを使用すると、xlsファイルが表示されますブラウザが最低限の要件を満たしていないため、私はWebベースのビューを提供しています。 Googleドキュメントのapiラッパーが使用するのと同じURL形式を使用すると、パブリックドキュメントのIDを渡しても認証する必要があります。

私はGoogleのapiドキュメントを検索しましたが、cfhttpを使用してバイナリ形式でスプレッドシートを直接ダウンロードできるように、公開ドキュメントをリクエストするための適切なURLフォーマットを見つけることができませんでしたか? cffhttpを使用して認証せずにxls形式の公開スプレッドシートをダウンロードするために必要な形式は何ですか?

答えて

1

私はriaforgeのRayのGoogle API cfcを使用して認証する必要がありました。私自身のアカウントで認証されると、公開されたスプレッドシートのIDをgoogle cfcのダウンロード機能に渡すことができ、スプレッドシートをxlsファイルとしてダウンロードすることができます。私は認証せずにダウンロードする方法を見つけることができませんでしたが、この方法では、エンドユーザーは自分のアカウントで認証する必要はありません。

1

Googleはリクエストの「user_agent」変数を読み込んでいる可能性が最も高いです。 CFでは、この変数はデフォルトでColdFusionまたはJavaのものです。 cfhttpリクエストに "useragent"属性を追加し、 "Mozilla/5.0(Windows NT 6.1; WOW64)"のような共通のものを使用してみてください。

+0

私はこれを試してみましたが、私が最終的に得たスプレッドシートは、私に認証を求めるWeb応答だと仮定していますが、実際のブラウザにURLを渡すと公開スプレッドシートが表示されますgoogleに認証されています。ブラウザでurlを実行しているときとcfhttpで実行しているときとで動作が異なる理由が分かりません。 –

+0

おそらくそれ以上のことがあります。私はFirebugを使って、FF(リクエストが成功した)からGoogleに送信された生の要求を調べ、他の変数やヘッダーやCookieが含まれているかどうかを確認します。試行錯誤している可能性があります:) –

+0

認証せずにスプレッドシートをダウンロードすることはできないようですか?それは真の質問かもしれません、誰もが、認証なしで公開のGoogleスプレッドシートをダウンロードするために必要なURL形式を知っていますか? –

関連する問題