見出し画像

#36 Google Maps APIで情報取得しよう

札幌でちいさな貿易商社を経営している、ケニー(tsujikenzo)です。noteでは、Tweet以上、技術ブログ未満の、アウトプットを行っています。

プログラミングや技術に関することはこちら。
技術ブログ『学習と成長のブログ』

会社や働き方についてなどの音声配信も行っております。
Podcast『北海道から世界の食卓へ』

今日のテーマは「Google Maps APIで情報取得しよう」です。プログラミングのお話です。※技術ブログではありません。


Geocoding API

Googleが無料で提供している「ジオコーディングAPI」というサービスがあります。使用するために、Googleアカウントは必須です。

何ができるのか

ジオコーディングAPIを使えるようになると、以下の業務が自動化できます。

  • 建物名から住所を割り出す(またはその逆)

  • 建物名や住所から緯度/経度を割り出す(またはその逆)

  • 建物名や住所からプレイスID(※1)を割り出す(またはその逆)

  • 境界ボックス(※2)を指定しての上記検索

※1. その場所について付与された固有のID
※2. 「長崎市」などで検索したら点線で表示される枠組みのアレ

Google Maps Platform

ジオコーディングAPIは、Googleが提供するGoogle Maps Platformサービスの一部です。座標だけでなく、さまざまなデータをビジネスに活用できそうですね。

地図とルート
場所と環境

具体的な業務における活用法

例えば、業務のなかで、「店舗リストがあるので、住所を調べて欲しい」なんて指示があると思います。このような作業はコピペ作業が大変ですし、情報に正確性が求められます。

そして、みなさんも経験あると思いますが、まだまだ生成系AIは使い物にならない感じですよね💦(早く仕事を奪ってくれたらいいのに2024年春)

渋谷エリアにおけるハンバーガーの競合店調査

なぜこの業務があるのか

「このリスト、何に使うんですか?」たとえ、あなたが部下であっても、取引先であったとしても、勇気を出して聞いてみましょう。

  • 市場規模を調べたい

  • 見込み客を見つけて営業をしたい

  • DMを送りたい

  • よくわからないけど、上から指示が下りてきたから、自分もやってるだけ

さまざまな理由があるでしょう。しかしながら、怒りをこらえながら、業務の本質を問いかけるべきです。

  • 市場規模を調べたいなら、そもそも「名前」リストを作成・精査する必要がありますよね?

  • 見込み客を見つけたいなら、その店舗の基本情報くらいは確認しないといけない(※3)んじゃないですか?

  • 口コミの多い店舗に集中してDMを送った方が、効率よくない(※3)ですか?

  • よくわからないなら、あなたの上司になぜ聞かないのですか?

※3 口コミ数や店舗情報によりターゲットを絞り、効率よく仕事をする

店舗(建物)情報をJSONで返すWEBアプリ

と、いうことで、キーワード(店舗や建物)を付けてリクエストを送信すると、情報をJSONで返してくれるWEBアプリを作りました。

以下のURLを、ブラウザに貼り付けて実行してみてください。

https://script.google.com/a/macros/jugani-japan.com/s/AKfycby85unDglm0H5SQ0zhntTKaxyVXmIzYhXkCs3lZoyJH9mGSWsNW4GOh63a7VMsLCUPQWA/exec?keyword="ここにキーワードを入力"

このような結果がJSON形式で返ると思います。("モスバーガー恵比寿店"で送信した結果)

{
"status":"成功しました",
"place_id":"ChIJM7KksEGLGGARHFf2gdu0MIk",
"address":"1-chōme-10-7 Ebisu, Shibuya City, Tokyo 150-0013, Japan",
"latitude":35.6469644,
"longitude":139.7107342
}

この「プレイスID」が非常に大事で、これがなければ店舗や建物の詳細を取得することができません。

プレイスIDを使って、「Google Maps Platformサービス」の「Places API & SDKs」を活用していきましょう。というお話でした。

おまけ

技術ブログではないので、技術については割愛しますが、WEBアプリはGASで書いたものをデプロイしています。

function doGet(e) {

  // クエリパラメータからキーワードを取得
  const keyword = e.parameter.keyword || 'キーワードがありません';

  //ジオコーディング処理
  const geocoder = Maps.newGeocoder();
  const response = geocoder.geocode(keyword);

  // responseオブジェクトのstatusプロパティを確認し、処理結果を整形(ガード節)
  if (response.status !== 'OK') {

    const errorOutput = {
      status: "失敗",
      message: "リクエストに失敗しました: " + response.status
    };

    return ContentService.createTextOutput(JSON.stringify(errorOutput))
      .setMimeType(ContentService.MimeType.JSON);
  }

  // 成功した場合、最初の結果のみを使用
  const result = response.results[0];
  const output = {
    status: "成功しました",
    place_id: result.place_id, //プレイスID
    address: result.formatted_address, //住所
    latitude: result.geometry.location.lat, //緯度
    longitude: result.geometry.location.lng //経度
  };

  return ContentService.createTextOutput(JSON.stringify(output))
    .setMimeType(ContentService.MimeType.JSON);
}

Places APIの技術ブログは、後で書くと思います。。。どうかなぁ。

この記事が気に入ったらサポートをしてみませんか?