GoogleのAPIでエラーが返ってきたらとりあえず見るべきこと一覧

2017-12-25 2017-12-26

GoogleのAPIは便利且つ精度高めなのでよく使うのですが(Yahooは精度が微妙)、エラーが返ってきてしまう事が少なくありません。

先日も、非常に単純なミスですがurlencodeをつけ忘れたことで、特定の漢字がパラメータに含まれていた場合にのみ、400エラーが返ってくる状態に陥ってしまいました。普通の漢字なら大丈夫なところが、気づきにくい部分です。

ということで、私が出会ってきた範囲だけですが、GoogleのAPIを使う際、エラーが返ってきたらとりあえず確認すべきことの一覧を並べてみます。

URLエンコード

冒頭で書いたやつです。
Google Maps Geocoding APIとか、日本語をパラメータに使う場合は必須です。
特定の漢字が混ざった瞬間にエラーが返ってきたりするので、テストで上手くいってるからと言って、油断すると酷い目にあいます。
URLエンコードは絶対にやっておきましょう。

全角/半角スペースの有無

パラメータには、trim的なことをちゃんとやっておきましょう。
変なところにスペースが入ると、エラーになったり、取得できるはずのデータが取得出来なかったりします。

無駄なheader情報の有無

変に凝ってheader情報をゴリゴリ入れてると、そのことが原因でエラーが返ってきたりします。
googleのapiはそんなことしなくてもちゃんと情報を返してくれるので、エラーが返ってきたらheader情報を確認しましょう。

PHPなら、file_get_contentsにURLだけ指定するのが一番安全です。

制限回数オーバー

GoogleのAPIは、利用回数のカウントがちょっと変なルールになっているため、1回叩いただけのつもりでも、数回消費してしまうようなAPIもあります。
「制限2000回だから、あと1000回以上は余裕で~」なんて考えてると、既に2000回消費してたりします。
ということで、エラーが出たらまずは確認。

https://console.developers.google.com

デベロッパーコンソールで、利用回数と制限回数を確認しましょう。

パラメータのフォーマット

例えば、Google Maps Distance Matrix APIでは、destinationsというパラメータが存在します。
Google Maps Distance Matrix APIは、とある地点から、とある複数地点までの移動距離や目安となる移動時間を取得するAPIですが、destinationsは、その「とある複数地点」を指定するパラメータです。

これを座標で設定するときは、こんなかんじのパラメータになります。

destinations=35.6811673,139.7670516|35.6284713,139.7387597

これは、東京駅、品川駅の座標をそれぞれ設定したものですが、緯度と経度の区切りはカンマ(,)、複数地点はそれぞれパイプ(|)で区切ることになっています。
こういったパラメータのフォーマットはAPIによって異なるため、意外にミスしやすいポイントです。

エラーが出たら、パラメータの形式が正しいか、確認しましょう。

パラメータのサポート

Google Places API Web Serviceなどがそれに当たりますが、パラメータの廃止が行われているサービスもあります。
ネット上で見かける「GooglePlacesAPIの使い方」みたいなやつには、その廃止されたパラメータが記載されたままのサンプルコードが書かれていることもあります。

初心者は避けてしまいがちな公式リファレンスですが、GoogleAPIにはご丁寧に日本語版が用意されています。

エラーが出たら、とりあえず公式マニュアルは参照しましょう。

パッと思いつくのはこれくらい。
また、何か思いついたら追記します。