【Node.js】Google Map検索を自動化してみた。


Google Map に存在するデータを検索用のキーワードで検索して、取得結果を一覧化するツールを作ってみました。

例えば
Google Map で
渋谷 マッサージ
道玄坂 マッサージ
恵比寿 マッサージ
代々木 マッサージ
といったキーワードでお店を検索し、検索結果を一覧化する作業を行っていたとしたら
とてもピッタリなツールではないかと思います。

作成の背景

今月から入社したスタートアップの出来立ての事業でWeb広告に関する営業をまずはテレアポで行うことになったのですが、
私がチームに入るまでリストの作成を手で行っていたので、自動化を試みました。

最初はPythonかGASとかでスクレイピングがいいのかなと思っていましたが、
Google Maps Platform を使えば一瞬でできました。✌

想定ユーザー

  • GoogleMap検索で取得した結果から営業先リストを作っている方。

ですが、そのほかにもこんな要望がある方にも使っていただけるツールです。

  • Google Map のレビューの高いお店から明日のディナー先を決めたい方 奥さんが明日のディナー先を探していたので、「場所 食べたいもの」で検索してあげたら、100件近く情報を取得できてしまい、結局選びづらいという実績を得ました。でも、まあ、工夫次第で改良は可能だと感じました。

事前準備

  • Node.jsがインストール済みであること
  • Google Cloud Platform(GCP) のアカウントを持っていること
  • GCPのアカウントはクレジットカード情報を登録して、課金可能になっていること  ※お金がかかるわけではありません。かからないように予算を設定すれば大丈夫です
  • Places APIが有効化されていること
  • GCPからAPIキーを発行済みであること

ソースコード

こちらにあります → Github map-api-create-sales-list-in-nodejs

インストール

上記リポジトリのreadme.mdにも書いていますが、次のコマンドを実行していきます。

git clone https://github.com/paths-are/map-api-create-sales-list-in-nodejs.git
cd map-api-create-sales-list-in-nodejs
npm install
cp .env.sample .env
cp search-areas_sample.txt search-areas.txt
cp search-keywords_sample.txt search-keywords.txt
cp search-filters_sample.txt search-filters.txt
mkdir search_result

.envAPI_KEY には、GCPで取得したご自身のAPIキーを設定してください。

サンプルコードを実行

API_KEYを設定すれば動く状態になっていますので、実行してみます。

node .

正常に実行されると、 検索結果は ./search_result/yyyymmdd_hhmmss フォルダ配下に出力されます。
出力された search-result.tsv をGoogleSpreadSheetに貼り付けてみてください。
こんな感じで出力されるはずです。

カスタマイズ

上記のサンプル検索では
「浅草 ハンバーグ」で検索されたお店一覧から住所に「浅草」が入っているお店だけを表示しています。
なぜ住所でフィルタを行うかといいますと、そうしないと、浅草以外の情報も取れてしまうからです。
(浅草で検索してるのに、遠方の情報が出てきてもだるいのでこの処理を入れました。)

例えば「浅草 ハンバーグ」「浅草 カレー」「浅草 焼肉」で検索をしたい場合は下記のように search-*.txt を用意します。

search-areas.txt
浅草
search-keywords.txt
ハンバーグ
カレー
焼肉

そして node . を実行すれば、浅草のハンバーグ、カレー、焼肉店の一覧をとってこれるわけです。

以上!また続きを書くかもです!