Google Sheetsで住所をジオコーディングする方法:確実に使える4つの方法

Google Sheetsでジオコーディングする方法:CSV、=GEOCODE()関数、Apps Scriptバッチ処理、逆ジオコーディング。1日100行無料。

| April 16, 2026

Google Sheetsに住所データがあり、緯度・経度の座標が必要な方は、まさに適切な場所に来ました。顧客の所在地をマッピングしたり、配送ルートを計画したり、店舗検索機能を構築する場合でも、Google Sheetsでのジオコーディングは、正しいやり方を誰も教えてくれない最も一般的なデータ作業の一つです。

問題は?Google Sheetsにはジオコーディング機能が組み込まれていないことです。=GEOCODE()のような関数は存在しません。しかし、4つの実用的な方法があり、コード不要の方法から完全自動のバッチ処理まで対応できます。

このガイドでは、Google Sheetsで住所をジオコーディングする各アプローチを紹介します。シンプルなコピー&ペーストのワークフローからカスタムApps Script関数まで。すべてのコード例は実際に動作し、CSV2GEOプラットフォームですぐに使えます。

それでは始めましょう。

Google Sheetsで住所をジオコーディングする必要があるのは誰か?

方法を詳しく説明する前に、一般的にジオコーディングが必要な方を紹介します:

📍

マーケティングチーム

地域ターゲティングキャンペーンのための顧客所在地マッピング。

🚚

配送オペレーション

ルート計画のための配送先住所の座標変換。

🏢

不動産会社

インタラクティブな物件検索マップのための物件情報のジオコーディング。

📊

研究者

アンケートや公的記録からの地理データ分析。

🛒

Eコマース

店舗検索機能の構築と配送エリアの計算。

🏥

医療

アクセス分析と施設計画のための患者所在地マッピング。

共通点は?スプレッドシートに住所があること。座標が必要なこと。そして1,000件の検索に500円も払いたくないこと。

方法1:コード不要 — CSVエクスポート、CSV2GEOにアップロード、貼り付け

最適な用途:コードを一切書かずに座標を取得したい方。

これはスプレッドシートをジオコーディングする最もシンプルなアプローチです。APIキー不要、スクリプト不要、技術的な設定不要。

ステップ1:Google SheetsをCSVにエクスポート

住所が入ったGoogle Sheetsを開きます。ファイル > ダウンロード > カンマ区切り値(.csv)を選択します。

住所データがきれいであることを確認してください。通り、市区町村、都道府県、郵便番号、国などの列、または最低限、完全な住所が1つの列に含まれている必要があります。

ステップ2:CSV2GEOにアップロード

CSV2GEOにアクセスし、CSVファイルをドロップゾーンにドラッグします。プラットフォームが自動的に列を検出します:

  • 通り — 住所の列
  • 市区町村 — 市町村名
  • 都道府県 — 県名や地域名
  • 郵便番号
  • 国 — 国名またはISOコード

処理をクリックすると、CSV2GEOが200以上の国の4億6,100万以上の住所データベースを使って各行をジオコーディングします。

ステップ3:結果をダウンロード

処理後、ジオコーディングされたファイルをダウンロードします。元のすべての列に加えて、緯度、経度、フォーマット済み住所、精度スコアが含まれます。

ステップ4:Google Sheetsに貼り付け

ダウンロードしたCSVをGoogle Sheetsで開くか(ファイル > インポート)、緯度と経度の列を元のシートにコピーするだけです。

以上です。コード不要、APIキー不要、設定不要無料ジオコーディングでは1日100行が無料で利用できます。

方法2:カスタムApps Script関数 — =GEOCODE(A2)

最適な用途:シート内で数式のような体験を求めるユーザー。

この方法はGoogle Apps ScriptとCSV2GEOジオコーディングAPIを使って、カスタム=GEOCODE()関数を作成します。

ステップ1:APIキーを取得

CSV2GEO APIキーにアクセスし、無料キーを生成します。無料プランには1日1,000 APIリクエストが含まれます。

ステップ2:Apps Scriptエディタを開く

Google Sheetsで、拡張機能 > Apps Scriptに移動します。

ステップ3:ジオコーディング関数を追加

既存のコードを削除し、以下を貼り付けます:

/**
 * 住所をジオコーディングしてlat, lngを返す
 * @param {string} address ジオコーディングする住所
 * @param {string} country ISOの国コード(任意、例:"JP")
 * @return {string} "latitude, longitude"
 * @customfunction
 */
function GEOCODE(address, country) {
  if (!address) return "";
  const API_KEY = "APIキーをここに入力";
  const url = "https://api.csv2geo.com/v1/geocode"
    + "?q=" + encodeURIComponent(address)
    + (country ? "&country=" + country : "")
    + "&api_key=" + API_KEY;

  const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  const data = JSON.parse(response.getContentText());

  if (data.results && data.results.length > 0) {
    const loc = data.results[0].location;
    return loc.lat + ", " + loc.lng;
  }
  return "見つかりません";
}

ステップ4:シートで使用する

スクリプトを保存(Ctrl+S)し、シートに戻ります:

=GEOCODE("東京都千代田区丸の内1-1", "JP")

結果:35.6812, 139.7671

セル参照も使用できます:

=GEOCODE(A2, B2)

A列に住所、B列に国コードが入っている場合です。

重要な注意:カスタム関数は1つずつ実行されます。500行の場合、それぞれが個別のAPIコールを行います。大量データには方法3を使用してください。

方法3:Apps Scriptメニューによるバッチジオコーディング

最適な用途:数百から数千の住所を効率的に処理する場合。

この方法はシートに「ジオコーディング」メニューを追加し、列全体をワンクリックでジオコーディングします。

ステップ1:スクリプトを追加

拡張機能 > Apps Scriptを開き、以下を貼り付けます:

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('ジオコーディング')
    .addItem('すべての住所をジオコーディング', 'geocodeAll')
    .addItem('逆ジオコーディング(選択範囲)', 'reverseGeocodeSelected')
    .addToUi();
}

function geocodeAll() {
  const API_KEY = "APIキーをここに入力";
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();

  for (let row = 2; row <= lastRow; row++) {
    if (sheet.getRange(row, 6).getValue()) continue;
    const address = sheet.getRange(row, 1).getValue();
    const country = sheet.getRange(row, 5).getValue();
    if (!address) continue;

    const url = "https://api.csv2geo.com/v1/geocode"
      + "?q=" + encodeURIComponent(address)
      + (country ? "&country=" + country : "")
      + "&api_key=" + API_KEY;

    try {
      const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
      const data = JSON.parse(response.getContentText());
      if (data.results && data.results.length > 0) {
        const r = data.results[0];
        sheet.getRange(row, 6).setValue(r.location.lat);
        sheet.getRange(row, 7).setValue(r.location.lng);
        sheet.getRange(row, 8).setValue(r.accuracy_score);
      }
    } catch (e) {
      sheet.getRange(row, 6).setValue("エラー: " + e.message);
    }
    Utilities.sleep(200);
    if (row % 50 === 0) {
      SpreadsheetApp.getActiveSpreadsheet().toast(
        "処理済み " + row + " / " + lastRow, "ジオコーディング", 3);
    }
  }
  SpreadsheetApp.getActiveSpreadsheet().toast("完了!", "ジオコーディング");
}

ステップ2:シートを整理する

A(住所)B(市区町村)C(都道府県)D(郵便番号)E(国)F(緯度)G(経度)H(信頼度)
東京都千代田区丸の内1-1千代田区東京都100-0005JP自動自動自動

ステップ3:ジオコーダーを実行

シートをリロードします。「ジオコーディング」メニューが表示されます。ジオコーディング > すべての住所をジオコーディングをクリックします。

スクリプトは200msの間隔で行を処理します。500件の住所で約2分かかります。

ヒント:1,000件以上の住所の場合は、数日に分散するか、CSVにエクスポートしてバッチジオコーディングを使用してください。

方法4:Google Sheetsでの逆ジオコーディング

最適な用途:すでに緯度・経度があり、住所が必要な場合。

これは正方向のジオコーディングの逆です。GPS座標があり、対応する住所が必要な場合。これが逆ジオコーディングです。

逆ジオコーディング関数

function REVERSE_GEOCODE(lat, lng) {
  if (!lat || !lng) return "";
  const API_KEY = "APIキーをここに入力";
  const url = "https://api.csv2geo.com/v1/reverse"
    + "?lat=" + lat + "&lng=" + lng + "&api_key=" + API_KEY;
  const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
  const data = JSON.parse(response.getContentText());
  if (data.results && data.results.length > 0) return data.results[0].formatted_address;
  return "見つかりません";
}

使い方:

=REVERSE_GEOCODE(35.6812, 139.7671)

結果:東京都千代田区丸の内1-1, 100-0005, JP

APIレスポンスの理解

CSV2GEO APIを呼び出すと、以下のようなレスポンスが返ります:

{
  "results": [{
    "formatted_address": "東京都千代田区丸の内1-1, 100-0005, JP",
    "location": { "lat": 35.6812, "lng": 139.7671 },
    "accuracy": "rooftop",
    "accuracy_score": 0.98,
    "components": {
      "house_number": "1-1",
      "street": "丸の内",
      "city": "千代田区",
      "state": "東京都",
      "postcode": "100-0005",
      "country": "JP"
    }
  }]
}

accuracy_scoreフィールドが重要です。0.95以上 = 建物レベルの精度。0.7〜0.95 = 通りレベル。0.7未満 = 市区町村または郵便番号レベルのみ。

比較:どの方法を選ぶべきか?

方法難易度速度最適な用途無料プラン
1. CSV + CSV2GEOなし⭐⭐⭐⭐⭐単発の作業100行/日
2. =GEOCODE()基本⭐⭐10〜50行1,000リクエスト/日
3. バッチメニュー基本⭐⭐⭐⭐100〜5,000行1,000リクエスト/日
4. 逆ジオコーディング基本⭐⭐⭐座標 → 住所1,000リクエスト/日

おすすめ方法1は単発の作業に。方法3は定期的な使用に。10,000行を超える場合は、バッチジオコーディングを直接使用してください。

ヒントとベストプラクティス

1. 住所をクリーンにする

入力がゴミなら出力もゴミ。ジオコーディング前に:

  • 空白を削除:=TRIM(A2)
  • 略語を統一:「丁目」vs「-」、「番地」vs「-」
  • 国コードを含める:JP、US、DEなどで精度が向上
  • 住所を結合:=A2 & ", " & B2 & ", " & C2 & " " & D2

2. 必ず国を含める

精度を最も改善するのは国を指定することです。「丸の内1-1」は世界中の複数の場所に存在し得ます。「JP」を追加すれば即座に曖昧さが解消されます。

3. 大量データにはバッチ処理

=GEOCODE()は10〜50行に適しています。それ以上はバッチメニュー(方法3)を使うか、CSVにエクスポートしてCSV2GEOバッチジオコーディングを使用してください。ファイルインポートは大量データに対して10倍高速です。

4. キャッシュを活用する

同じ住所を2回ジオコーディングするのは無駄です。座標が既に存在するか確認しましょう:

if (sheet.getRange(row, 6).getValue()) continue;

5. エラーを処理する

一部の住所はジオコーディングできません — タイプミス、不完全なデータ。スクリプトは「見つかりません」または「エラー」を返すので、それらを特定できます。

6. API使用量を監視する

無料プランでは1日1,000リクエストを提供しています。5,000行の場合は5日に分散するか、上位プランにアップグレードしてください。

7. 自動化にはAPIを活用

定期的なジオコーディングには、フル機能のジオコーディングAPIで自動ワークフローを構築してください。CSV2GEOは正方向ジオコーディング、逆ジオコーディング、バッチ処理、場所検索、行政境界を網羅する19のエンドポイントを提供しています。

よくある質問

Google Sheetsでのジオコーディングは無料ですか?

はい。コード不要のCSV方法では1日100行が無料。API方法では1日1,000リクエストが利用可能です。

何件の住所をジオコーディングできますか?

無料で1日1,000件。50,000件以上の場合はCSVにエクスポートしてバッチジオコーディングを使用してください。

APIキーは必要ですか?

方法2、3、4のみ必要です。方法1は何も不要 — CSV2GEOにアップロードするだけです。

海外の住所にも対応していますか?

はい。CSV2GEOは200以上の国4億6,100万以上の住所をカバーしています。ISOコード(JP、DE、FR)を含めてください。オーストラリアブラジルのガイドもご覧ください。

精度はどのくらいですか?

きちんとフォーマットされた住所の場合、結果の90%以上が建物レベルの精度です。accuracy_score(0〜1)が信頼度を示します。詳しくは住所を緯度・経度に変換する方法ガイドをご覧ください。

逆ジオコーディングは可能ですか?

はい。上記の方法4をご覧ください。コード不要の逆ジオコーディングツールもご利用いただけます。

データは自動的に更新されますか?

いいえ。座標は静的な値です。住所を変更した場合は、関数またはスクリプトを再実行してください。

Google SheetsとExcelの違いは?

Google SheetsはApps Script(JavaScript)を使い、ExcelはVBAを使います。基本的なロジックは同じです。Google Sheetsはクラウドネイティブです。Excelは非常に大きなファイル(100万行以上)に適しています。専用ガイド:Excelでジオコーディング

ジオコーディングを始めましょう

住所を無料バッチジオコーディングツールにアップロードするか、上記のスクリプトをGoogle Sheetsで使用してください。1日100行無料、登録不要です。

I.A. / CSV2GEO Creator

関連記事

Ready to geocode your addresses?

Use our batch geocoding tool to convert thousands of addresses to coordinates in minutes. Start with 100 free addresses.

Try Batch Geocoding Free →