GASでぐるなびAPIをたたいてみる!その2

GoogleAppsScript(GAS)
スポンサーリンク

こんにちはIT初心者のうえはらです。

前回、ぐるなびのAPIをたたいて、浦添市のラーメン店のjson形式のデータ一式を受け取りました。自分としては、メモ帳に貼り付けてこれだけでもいいんですけど、、、、一般的には実用的ではないので、

取得したお店の一覧を配列に突っ込んでみたいと思います!

配列に追加するには「push」すればいいんですね。

検索件数だけ、配列に追加してみたいと思います。

保存しようとすると、エラーが起きました。

14行目で「ステートメントの前に ; がありません。」

となっています。なんじゃそりゃ?

色々いじって先に「arrName」を配列として宣言してあげれば、無事に保存できました。このように変更です。

いざ、実行!

「TypeError: undefined からプロパティ「name」を読み取れません。」??

実行ボタンと関数名の間にある虫みたいなマークでデバックしてみます。

「arrName」にちゃんと入ってるけどなぁ~? しばしの沈黙、、、、。

ん? 検索件数の「hit_count」は15? 「arrName」には10個しか入っていないけど、11個目はどうした?

「json」の中を見てみます。「total_hit_count」は「15」だけど、「hit_per_page」は「10」だ。「rest[10]」となっていて、10件しか拾ってない感じ。

for文で「hit_count」の回数、配列に追加するけど、11件目がないから、「「name」を読み取れません」となったのね。なるほど。

API仕様を確認してみました。

hit_per_page (ヒット件数)

一度リクエストで得るレスポンスデータの最大件数(デフォルト:10、上限:100)

ちゃんと書いてありました。(当たり前か)

条件に合う店舗がたくさんあっても、一回のリクエストで帰ってくるレスポンスデータはデフォルトで10件なんですね。

ん~10件か。今回に限れば15件でいいけど、汎用性を持たせないしなぁ~。上限の100件取得するようにしてもいいけど、重くなるだろうし、そんなに見てもなぁ~。見ても20件かな?ということで、「hit_per_page=20」としました。

検索される店舗は最大20件。でも、ヒットする店舗が20件より少ない場合は検索された件数だけfor文をまわさないといけません。

そのための条件式も追加しました。

ラーメンは妥協するとして、都市名は変更できるようにしたいなぁ~。ということで、いろいろとつまづきましたが、最終のプログラムです。

できました?

見やすいように改行(\n)を入れています。

今のままだと、GASで都市名を打ち変えないといけませんが、doPost()とか利用すれば、slackやLINE等から都市名を送信して、その都市名で検索できるようにもなりますね!

次は何やろうかぁ~?

コメント