こんにちはIT初心者のうえはらです。
今回は前回取得したぐるなびのアクセスキーを使って、ぐるなびのAPIをたたいてみたいと思います。
レストラン検索API
レストラン検索APIで住んでいる「浦添市」で好きな「ラーメン」を検索してみます。
function myFunction() {
var gurunaviAPI = '********************';//取得したアクセスキー
var url = 'https://api.gnavi.co.jp/RestSearchAPI/20150630/?';
url = url + 'keyid='+ gurunaviAPI;
url = url + '&format=json';
url = url + '&address=浦添';
url = url + '&freeword=ラーメン';
var response = UrlFetchApp.fetch(url);
var json=JSON.parse(response.getContentText());
var hit_count = json.total_hit_count;//件数確認
Logger.log(hit_count);
Logger.log(json);
}
UrlFetchApp.fetch(url)でAPIをたたけることはわかっていたので、urlにレストラン検索のURL、リクエストパラメーターにkeyid、format、address、freewordをそれぞれ設定しました。
まずは、やってみようなのでLogger.logでログ出力します。
出力内容は検索件数と、とりあえず、jsonのレスポンス内容です。
ちなみに、ログの表示は「Ctrl+Enter」です。

はいとりあえず、こんな感じで取得できました。
一件目はなんと!、家族みんな好きでよく行く
「五十代目哲麺縁 沖縄浦添店」
でした。
メモ帳にコピーして、パラメーター毎に改行してみました。
{rest=
[{
parking_lots={},
pr={
pr_short=期間限定とろろラーメン登場! 追い飯付き!とろだくラーメン・・・780円 粉唐辛子が効いたピリ辛味!マグマラーメン・・・750円,
pr_long=【ラーメンのこだわり】<BR>1. クリーミーな豚骨スープ<BR>豚骨を6時間、鶏ガラは3時間、じっくり別々に煮だし、<BR>オリジナル「マー油」で仕上げています。<BR>2. オリジナルの低加水の極細麺<BR>麺は、低加水のため、スープをよく吸い込みます。シコシコした歯ごたえで、麺の固さは<BR>やわらかめ、ちょいやわ、ふつう、ちょいかた、かため、ばりかた、はりがね、こなおとし<BR>8通りから選べます。<BR>3. 自分好みの1杯に! 麺のゆで方、味の濃さ、脂の量が調整可能<BR>トッピングも8種類から選べます。<BR>トッピングは、<BR>きくらげ、味玉子、白髪ネギ、青ネギ、のり、磯のり、チャーシュー、ネギチャーシュー<BR>8種類、120円~。
},
lunch={},
access={
note={},
line=ゆいレール,
station=儀保駅,
station_exit={},
walk=車10
},
code={
category_name_l=[ラーメン・麺料理, {@attributes={order=1}}],
areaname_s=浦添,
areaname=沖縄,
areacode_s=AREAS8202,
category_code_s=[RSFST08008, {@attributes={order=1}}],
prefname=沖縄県,
category_name_s=[ラーメン, {@attributes={order=1}}],
category_code_l=[RSFST08000, {@attributes={order=1}}],
areacode=AREA200,
prefcode=PREF47
},
e_money={},
latitude=26.242103,
flags={mobile_site=1, pc_coupon=0, mobile_coupon=0},
@attributes={order=0},
coupon_url={pc={}, mobile={}},
holiday=無,
tel_sub=098-943-3002,
tel=050-3490-3624,
id=fb6d614,
fax={},
longitude=127.726211,
budget=850,
address=〒901-2114 沖縄県浦添市安波茶3-2-10,
image_url={shop_image1=https://uds.gnst.jp/rest/img/fx1x882p0000/t_0n5c.jpg, qrcode=https://c-r.gnst.jp/tool/qr/?id=fb6d614&q=6, shop_image2={}},
opentime= 11:00~24:00,
update_date=2017-08-02 12:15:17,
url=https://r.gnavi.co.jp/fx1x882p0000/?ak=4nhzN%2FVLihYDh%2FP%2B9BXWauXLheYT%2FzKoOrg0AxWyKX8%3D,
url_mobile=http://mobile.gnavi.co.jp/shop/fb6d614/?ak=4nhzN%2FVLihYDh%2FP%2B9BXWauXLheYT%2FzKoOrg0AxWyKX8%3D,
credit_card={},
name=五十代目哲麺縁 沖縄浦添店,
name_kana=ゴジュウダイメテツメンエン オキナワウラソエテン,
category=とんこつラーメン,
party={}
},
jsonでそれぞれ指定すれば値が得られるのはわかっているのですが、初心者なので、とりあえず見てみたいんです!
ふむふむ。API仕様に書いてあるとおりの順番ではないんですね。json形式で取り出せば、特に問題は無いですよね。
2件目はどのお店かなぁ?行ったことのあるところかぁ?と思っていると、なんと焼肉屋!! フリーワードカテゴリーも「category=韓国料理焼肉専門」。
3件目は?居酒屋!! フリーワードカテゴリーは「category=鮮魚 和風居酒屋」。
4件目にやっとラーメン店が出てきました。GASのログでは4件目までしか表示されませんでした。
なんで?
ぐるなびのサイトで検索するとどうなるかやって見ました。

結果は1件目は同じく「五十代目哲麺縁 沖縄浦添店」、2件目は「豚骨拉麺 昇家 」!ラーメン店が検索されてる!
う~ん。なんでかな~。しばしぐるなびのサイトを見ていると、、、気付きました!

ジャンルが「ラーメン・つけ麺」になっている!
ほっほ~。フリーワード検索だったからか。?? でも、2件目も3件目も「ラーメン」の文字は無いけどなぁ?
これ以上考えても仕方ないので、フリーワード検索だと
うまくいかないこともある
ということにしときます。
次は、ジャンルで検索してみたいと思います。
でも、哲麺の大業態コードは「category_name_l=[ラーメン・麺料理,」?
「ラーメン・つけ麺」じゃなーーーい!
これもなぞですが、ラーメン検索して、パスタが出てきても嫌なので(麺料理では出てこないかな?)、より正確に小業態コード「category_name_s=[ラーメン,」「category_code_s=[RSFST08008,」で検索してみます。
function myFunction() {
var gurunaviAPI = 'f0d27ace9e15030daea61936198e238d';
var url = 'https://api.gnavi.co.jp/RestSearchAPI/20150630/?';
url = url + 'keyid='+ gurunaviAPI;
url = url + '&format=json';
url = url + '&address=浦添';
url = url + '&category_s=RSFST08008';//ラーメンの小業態コード
var response = UrlFetchApp.fetch(url);
var json=JSON.parse(response.getContentText());
var hit_count = json.total_hit_count;
Logger.log(hit_count);
Logger.log(json);
}
ログ確認すると、、、、はいできました。
次回は検索されたお店一覧を表示してみたいと思います。


コメント