#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)ですか?
よくわからないなら、あなたの上司になぜ聞かないのですか?
店舗(建物)情報をJSONで返すWEBアプリ
と、いうことで、キーワード(店舗や建物)を付けてリクエストを送信すると、情報をJSONで返してくれるWEBアプリを作りました。
以下のURLを、ブラウザに貼り付けて実行してみてください。
このような結果が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の技術ブログは、後で書くと思います。。。どうかなぁ。
この記事が気に入ったらサポートをしてみませんか?