LoginSignup
5
9

More than 5 years have passed since last update.

GoogleAppsScriptでぐるなびのAPIを叩いた結果をスプレッドシートに書き出す

Posted at

GASの勉強がてらやってみました。

近所のお店をずらっと書き出すとかに使えそうです。
出力件数の制限があるそうなので、そこはもうちょっと工夫しないと回らなさそうですが。
(for文でoffsetいじるとかになるかな)

githubはこちら。
https://github.com/ymk1t/gnavi_api

gnavi_api.gs
function myFunction() {
  var gurunaviAPI = '*************';//取得したアクセスキー
  var url = 'https://api.gnavi.co.jp/RestSearchAPI/20150630/?';
  url = url + 'keyid='+ gurunaviAPI;
  url = url + '&format=json';

  // リクエストパラメータ
  url = url + '&freeword=ラーメン';

  var response = UrlFetchApp.fetch(url);
  var json=JSON.parse(response.getContentText());

  var jsonLength = Object.keys(json.rest).length;//ヒットした件数を取得する
  var arrArea = [];//出力する値を入れるための配列

  if(jsonLength < 1){
    return;
  }

  for (var i=0;i<jsonLength;i++){
    // 出力したい情報を配列に入れていく
    arrArea.push([json.rest[i].url,
                  json.rest[i].name,
                  json.rest[i].id
                 ]);
  } 

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = sheet.getSheetByName('シート1');
  var rows = arrArea.length;
  var cols = arrArea[0].length;
  sheet1.getRange(3,2,rows,cols).setValues(arrArea);//スプレッドシートに書き込む
}

GASは初めて使いましたが、シートの書き込み処理が結構シンプルで嬉しい驚きでした。
1. 対象とするシートやセルを指定する
2. 書き込みたい値を配列に入れておく。
3. getRange().setValue()を使って決めた場所に配列の値を書き出す
ぐらいで動きますもんね。

APIの検索条件は冒頭のURLの文字列にパラメータを追加していくことでできて
出力についてはarrArea.pushのところで順番や内容を修正できます。

APIやGASの良い練習になりました。

補足

ぐるなびAPIはアカウント発行してアクセスキーを取得しないと動かないので利用になる場合は事前に登録しましょう。
また、期間の指定やアプリの登録が必要になりますが、自分はお試しの一時利用ということにして突破しました。

参考サイト

ぐるなびウェブサービス
Google Apps Script 入門

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9