web-dev-qa-db-ja.com

GoogleスプレッドシートワークシートJSONを取得する

GoogleスプレッドシートワークシートのJSONを受信しようとしています。それは数日前まで機能しました。デフォルトのワークシートでは引き続き機能しますが、他のすべてのワークシートでは機能しません。

これは、デフォルトのワークシートの作業用URLです。 https://spreadsheets.google.com/feeds/list/1caRqAA1TyBoZ0eVZvvKheEBh9SGRmQII4qih9urY70k/od6/public/full?alt=json

そして、これは動作を停止したワークシートのURLです: https://spreadsheets.google.com/feeds/list/1caRqAA1TyBoZ0eVZvvKheEBh9SGRmQII4qih9urY70k/1416241220/public/full?alt=json

エラーメッセージはInvalid query parameter value for grid_id.

唯一の違いは、ワークシートパラメータ(od61416241220)。

そのエラーが突然発生する理由について何か考えはありますか?

27
roka

ChrisPetersonのメモ:

ワークシートの位置番号を使用できます(1つ目はデフォルトのワークシート、2つ目は2番目のワークシート)。

元の回答

私は同じ問題に遭遇し、どうにかして自分の道を見つけました。最近、各ワークシートのIDを変更したようです。

新しいIDは次の場所にあります

https://spreadsheets.google.com/feeds/worksheets/YOUR_SPREADSHEET_ID/private/full

o3laxt8 の間に <id>タグ

PS:od6およびdefaultの値は常に機能し、ドキュメントの最初のワークシートにリダイレクトされます。

Joe Germuska 'note:

od6が機能しなくなった

再び動作するようです。

56
LeonardDrs

受け入れられた回答とワークシートID、およびそれらを明確にしない場所を含めて、そこには十分に混乱する指示があるので、具体例を共有したいと思います。

これが私が公開したドキュメントで、リンクを知っている人なら誰でも閲覧できます。
https://docs.google.com/spreadsheets/d/1QDWpycJJFA-UAiSPIv-icJ4UZhbEmuN8wxxag83SE1c/edit?usp=sharing

ドキュメントは正しく公開されている必要があります。 2つの[公開]ボタンがあり、最初のボタンはこのタスクでは機能しません。 2番目を使用します。

enter image description here

文書KEYは重要です。 URLの/d//editの間からKEYを取得します。私の例では、キーは1QDWpycJJFA-UAiSPIv-icJ4UZhbEmuN8wxxag83SE1cです。

次に、次のURLスタイルを使用し、KEYを独自のURLスタイルに置き換えます。

https://spreadsheets.google.com/feeds/list/KEY/od6/public/values?alt=json

私のサンプルURLは公開されたjsonに直接リンクしています:
https://spreadsheets.google.com/feeds/list/1QDWpycJJFA-UAiSPIv-icJ4UZhbEmuN8wxxag83SE1c/od6/public/values?alt=json

最後に、ワークシートに複数のシート(またはタブ)がある場合は、URLのod6を数字に置き換えます。私の例には2つのタブがあるので、どちらかのタブに対応する2つのURLがあります。シートの順序に応じて、od61および2に置き換えるだけです。

タブ1:
https://spreadsheets.google.com/feeds/list/1QDWpycJJFA-UAiSPIv-icJ4UZhbEmuN8wxxag83SE1c/1/public/values?alt=json

タブ2:
https://spreadsheets.google.com/feeds/list/1QDWpycJJFA-UAiSPIv-icJ4UZhbEmuN8wxxag83SE1c/2/public/values?alt=json


タブが頻繁に並べ替えられるワークシートのイベントでは、特定のシートのIDを取得して、並べられた番号の代わりにそれを使用することが可能です。私は最初にこのアプローチについてこれ post またはこれ post から学びました:

簡単に言うと、KEYを使用してプライベートURLを再構成します。

https://spreadsheets.google.com/feeds/worksheets/KEY/private/full

これは、権限を持つアカウントでGoogleドライブにログインしているブラウザでのみ機能します。

次に、XMLを調べてシートIDを見つける必要があります。

enter image description here

以前の1および2をIDに置き換えます。次に例を示します。

タブ1(新しいGoogleシートの最初のワークシートIDは、タブの順序に関係なく、デフォルトでは常にod6です): https://spreadsheets.google.com/feeds/list/1QDWpycJJFA-UAiSPIv-icJ4UZhbEmuN8wxxag83SE1c/od6/ public/values?alt = json

タブ2:
https://spreadsheets.google.com/feeds/list/1QDWpycJJFA-UAiSPIv-icJ4UZhbEmuN8wxxag83SE1c/ope57yg/public/values?alt=json

9
ThisClark
1
storm is-in