ガイド

スプレッドシートの住所を1回の一括リクエストでジオコーディングする

住所でいっぱいのスプレッドシートにループは必要ありません。My Geocodeのすべてのエンドポイントは、クエリパラメーターの代わりにJSON配列を含むPOSTリクエストを受け付けます。ジオコーディングのエンドポイントは住所の列全体を一度に受け取り、送った順番と同じ順序で、行ごとに1件のジオコーディング結果を返します。

リクエストを組み立てる

スプレッドシートの住所の列を文字列のシンプルな配列としてエクスポートし、/v1/forwardにPOSTします。配列の各要素はそれぞれ個別の検索として扱われ、送った順番と同じ順序で、それぞれの結果が返されます。

POST /v1/forward
Content-Type: application/json

["221B Baker Street, London", "1600 Pennsylvania Avenue, Washington"]
{
  "status": "ok",
  "results": [
    {"formatted": "221B Baker Street, London, UK", "lat": 51.5237, "lon": -0.1585, "type": "address", "precision": "house", "confidence": 0.95, "place_id": "abc123", "components": {}},
    {"formatted": "1600 Pennsylvania Avenue, Washington, DC", "lat": 38.8977, "lon": -77.0365, "type": "address", "precision": "house", "confidence": 0.97, "place_id": "def456", "components": {}}
  ]
}

複数の国が混在するリストで結果を絞り込む

スプレッドシートが複数の国にまたがる場合でも、文字列のシンプルな配列はそのまま使えますが、国によって同じような通り名があると、誤った国の住所として解決されることがあります。スプレッドシートに国の列が別にある場合は、複数の国を1回の呼び出しに混ぜて住所の文字列だけで区別できることを期待するのではなく、国ごとの行をそれぞれ別のバッチとして送り、countriesパラメーターに対応するISOコードを設定してください。

コスト

一括リクエストは呼び出し単位ではなく、要素単位で課金されます。1回のPOSTに2件の住所を含めると、2件の別々のGETリクエストを送った場合とまったく同じく、1日の割り当てから2件のリクエストを消費します。500行のスプレッドシートなら500件のリクエストとなり、すべてのキーに、あるいはキーがなくても付いてくる1日あたりの無料リクエスト2,500件の範囲に十分収まります。

行と結果を突き合わせる

結果は送った配列と同じ順序で返ってくるため、リクエストを送る前に、各住所の横に元の行番号を保持しておいてください。レスポンスが届いたら、テキストを比較するのではなく位置によって結果をスプレッドシートの行に対応付けます。レスポンスに含まれる整形済みの住所が、入力した文字列とまったく同じになることはほとんどないからです。

一部の失敗への対処

結果がない行、信頼度スコアが低い行、必要な精度に満たない行は、自動的に受け入れるのではなくフラグを立てるべきです。各要素のconfidenceフィールドを確認し、自分で決めたしきい値を下回るものは手動確認のリストに回してください。

エッジケース:空白行

スプレッドシートのエクスポートには、書式設定や、以前に空のセルを含めていたフィルターの名残で、ファイルの末尾近くにまったく空白の行がいくつか含まれていることがよくあります。配列内の空文字列も1件の要素としてカウントされ、通常は空の結果か信頼度の非常に低い結果が返されます。そうした結果はデータテーブルに入る前に取り除かなければならないため、空白行はバッチに流すのではなく、エクスポートの時点で削除しておいてください。

避けるべき間違い

同じ住所を、現在の顧客リストから一度、整理されないままの古いエクスポートからもう一度と、2回送ってしまうと、重複した作業で1日の割り当てのかなりの部分を簡単に使い切ってしまいます。配列を組み立てる前に住所の列から重複を取り除き、数行が追加されるたびにスプレッドシート全体をジオコーディングし直すのではなく、前回のエクスポート以降に変更された行だけを再実行してください。

大きなファイルを分割する

非常に大きなファイルは、数百行から数千行ずつのまとまりに分けたほうが扱いやすくなります。分割しておけば、バッチの合間に割り当てヘッダーを確認し、無料割り当てやプリペイドクレジットを超える前に止めることも簡単です。

スプレッドシートの行数がそれなりにあるなら、これは1件のリクエストで済むか、数百回の往復が必要になるかの違いです。リクエストとレスポンスの完全な構造はジオコーディングのページに記載されています。