Pythonのgooglemapsを用いて住所をジオコーディングすると課金を有効にするエラー発生

Pythonのgooglemapsを用いて住所をジオコーディングすると課金を有効にするエラーが発生したことについて書きます。

今回はgooglemapsを用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

なお、今回は、Google Cloud PlatformでGeocodingAPIとDirectionsAPIを有効にしている状態で、「認証情報」で「GeocodingAPI」のAPIキー(認証情報)を作成し、APIキーを発行した。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■googlemapsを用いて住所をジオコーディングする

では、早速googlemapsを用いて住所をジオコーディングするスクリプトを書いていきます。

■コード

import googlemaps

gmaps = googlemaps.Client(key='APIキー')

geocode_result = gmaps.geocode('大阪市, JA')

print(geocode_result)

今回は実験・検証としてgooglemapsモジュールをimportし、gmapsという変数を定義し、その中でgooglemaps.Client()を用いて、括弧内に引数,パラメータとして発行したAPIキーを渡す。

その後、geocode_resultという変数を定義し、その中でgmaps.geocode()を用いてジオコーディングを行い結果をgeocode_result変数に格納。

格納後、print()関数でgeocode_result変数内の情報を出力してみます。

■実行・検証

このスクリプトを「g_map.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

Traceback (most recent call last):
  File "g_map.py", line 6, in 
    geocode_result = gmaps.geocode('大阪市, JA')
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\googlemaps\client.py", line 420, in wrapper
    result = func(*args, **kwargs)
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\googlemaps\geocoding.py", line 75, in geocode
    return client._request("/maps/api/geocode/json", params).get("results", [])
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\googlemaps\client.py", line 315, in _request
    result = self._get_body(response)
  File "C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\googlemaps\client.py", line 344, in _get_body
    raise googlemaps.exceptions.ApiError(api_status,
googlemaps.exceptions.ApiError: REQUEST_DENIED (You must enable Billing on the Google Cloud Project at https://console.cloud.google.com/project/_/billing/enable Learn more at https://developers.google.com/maps/gmp-get-started)

実行してみると、「googlemaps.exceptions.ApiError」というエラーが発生した。エラーの内容を確認してみると、「Google Cloud Project で課金を有効にする必要がある」というもので、課金を有効にしないと、ジオコーディングは使えないということがわかった。

コメント

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