[GoogleMapAPI] GoogleMapをスクレイピングしてスプレッドシートに書き込む

デザイン
2023年最新!おすすめのレンタルサーバー


今なら実質半額!月額495(税込)で超高速サーバーが使用可能!

今なら「星のリゾート宿泊券」「iPad」などの豪華賞品が当たるチャンス!

10日間お試し無料!2023年2月2日まで!
エックスサーバー 公式サイトはこちら >

 (このページは2023年1月8日に更新しました)

本記事の内容

 

「GoogleMapの情報をスプレイピングしたい」

「GoogleMapAPIを活用したい」

「具体的な方法が知りたい」

  

今回はこれらの疑問にお答えしていきます。

手順は我流ですので、自己責任で参考にしてみてください。 

 

なお、本記事では、APIKEYの取得・契約方法は割愛します。

スプレッドシートでAppsScriptを起動

 

まずはスプレッドシートを立ち上げます。

その後、拡張機能→AppsScriptを立ち上げます。

 

 

すると、新しいタブが開き下記の画面になります。

 

このmyFunctionの中に、コードを書いていきます。

 

APIKEYの格納

 

MapsPlatformを契約した際、APIKEYは検索に対し、ipアドレスや、webサイトアドレスを指定することで、KEYを悪用(請求が発生する恐れ)されない様にすることを提案されます。

 

しかし、これだけでは心配なので、使う際には、コードに直接記述しないのが一番です。

誤って公開することが無いように、APIKEYを格納しておきます。

 

AppsScriptでは、スプリプトプロパティに値を保存することが出来ます。

まずは「設定」から、

 

 

 次に、「スプリプトプロパティを追加」を選択、

  

 

「プロパティ」に『API_KEY』、「値」に取得した『APIKEY』を格納します。

  

 

これで、scriptから「API_KEY」を呼び出すことで、KEYを使うことが出来ます。

 

コードでは、下記の様になります。

 

function myFunction() {
  const KEY = PropertiesService.getScriptProperties().getProperty('API_KEY');
}

 

ScripitでMapAPIを叩く

 

ここからが本題。

APIを呼び出していきます。

 

今回はこんな事例で説明していきたいと思います。

 

・1列目に書いてある施設名をテキストで検索

・2列目に検索した施設の住所を書き込む

ひとことでMapAPIと言っても、その中に複数のAPIがあります。

今回は、そのうちの『Places API』使用することになります。

 

 

書き込むシートを作成

 

まずはスプレッドシートの1列目に施設名を入れたシートを用意します。

 

この様な形。

1列目に、調べたい施設名を入れます。ちなみに、シート名はデフォルトの「シート1」のままになっています。

 

Scriptの作成

 

これは、先にコードを見てみましょう。

function myFunction() {
 const KEY = PropertiesService.getScriptProperties().getProperty('API_KEY');
 const START_ROW = 1;
 const NAME_COL = 1;
 const ADDRESS_COL = 2;

 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
 var lastrow = spreadsheet.getLastRow();
  
 for(var i=START_ROW; i<=lastrow; i++){
 
  var facility = spreadsheet.getRange(i,NAME_COL).getValue();
  
  var theUrl = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=";
  theUrl += String(facility);
  theUrl += "&language=ja&key=";
  theUrl += KEY;
  var resp = UrlFetchApp.fetch(theUrl);
  var data = JSON.parse(resp.getContentText());
  var NewADDRESS = data['results'][0]['formatted_address'];
  spreadsheet.getRange(i,ADDRESS_COL).setValue(NewADDRESS);
   
 };

}

この様な形。

 

順に説明すると、

「シート1」を呼び出し、行数を検出。

下記の指示を行数回実行。

名前の列のデータを呼び出し、そのテキストをPlaceAPIに送ります。

戻ってきた値をJSONオブジェクトに変換。

そのJSONオブジェクトの「formatted_address」を「NewADDRESS」に代入。

スプレッドシートの2列目に挿入。

 

ちなみにJSONオブジェクトの内容は、下記の様になっています。

 

 

今回、取得したのは赤枠の住所になります。

 

完成形

 

上記scriptを実行すると、

この様に、B列にGoogleMapに登録されている住所が入り出来上がりです。

  

まとめ

 

いかがでしたでしょうか?

 

様々なAPIの叩き方がありますが、スプレッドシートでの連携は検索しても出てきませんので、今回まとめてみました。

 

ご意見等ありましたら、コメント欄にお願いします。

 

ワードプレスのプラグインなどの情報を配信しております。よろしければご覧ください。

カテゴリー:プラグインまとめ

コメント

タイトルとURLをコピーしました