🍔

スプレッドシート上で住所補正を行う(Geocoding API)

2023/12/15に公開

はじめに

Google Sheetsにおいて、住所を自動的に補正するための関数は標準で提供されていません。しかし、いくつかの方法で住所のクリーニングや補正を行うことができます。

Google Apps Script + Google Maps Geocoding API

Google Apps Scriptを使用して、Google Maps Geocoding APIを呼び出して住所を補正する手順を以下に示します。これはGoogle Sheets上で利用することができます。

Google Maps Geocoding API の有効化

下記、参考に設定 → APIキー取得

Google Apps Script の設定

  • Google Apps Scriptのエディタを開く
    Google Sheetsのメニューから「拡張機能」 > 「Apps Script」をクリックして、Google Apps Scriptのエディタを開きます。

  • 新しいスクリプトを作成
    エディタで新しいスクリプトを作成します。

  • スクリプトを作成
    以下のようなスクリプトを記述します。

//住所の数値情報を半角に変更
function convertFullWidthToHalfWidth(inputString) {
  // 全角数字を半角数字に変換
  var convertedString = inputString.replace(/[-]/g, function(s) {
    return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
  });

  // 変換後の文字列を返す
  return convertedString;
}

// Google Maps Geocoding API
function correctAddress(address) {
  var apiKey = 'YOUR_GOOGLE_MAPS_API_KEY'; //個々に発行してください
  var region = 'jp';  // 日本を指定
  var language = 'ja';  // 日本語を指定
  var apiUrl = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + encodeURIComponent(address) + '&region=' + region + '&language=' + language + '&key=' + apiKey;

  try {
    var response = UrlFetchApp.fetch(apiUrl);
    var data = JSON.parse(response.getContentText());

    if (data.status === 'OK') {
      // Logger.log('Geocoding API communication successful');
      // Logger.log('Formatted Address: ' + data.results[0].formatted_address.split(' ')[1]);
      return (convertFullWidthToHalfWidth(data.results[0].formatted_address.split(' ')[1]));

    } else {
      // Logger.log('Geocoding API communication failed. Status: ' + data.status);
      // return ('Geocoding API communication failed. Status: ' + data.status);
      return ('-');

    }
  } catch (e) {
    // Logger.log('Error communicating with Geocoding API: ' + e);
    // return ('Error communicating with Geocoding API: ' + e);
    return ('-');
  }
}

このスクリプトは、correctAddressという関数を定義しています。この関数はGoogle Maps Geocoding APIを使用して住所を補正し、補正された住所を返します。

  • 保存
    スクリプトを保存します。

  • Google Sheetsに関数を追加
    Google Sheetsに戻り、適用したいセルに以下のように関数を追加します。

=correctAddress(A1)

ここで、A1は補正したい住所が格納されているセルの場所です。関数を入力すると、APIを呼び出して住所が補正されます。
例、「青葉区桂台」→「神奈川県横浜市青葉区桂台」

注意

Google Maps Geocoding APIを使用するには、APIキーが必要です。APIキーはGoogle Cloud Consoleで取得できます。また、APIの使用量には制限があります。無料の枠を超える場合は課金が発生する可能性があります。使用前にGoogle Cloudの料金ポリシーを確認してください。

おわりに

自分は、件数が少なかったので無料枠で処理しきれました。
精度は、あまり高くは感じませんでしたが、一件一件ネット検索して調べるよりましでした。
そして、ありがとうChatGPT。

補足

  • Google Maps Geocoding API の無料枠(参考)
  • API の保護について
    Geocoding APIは、IPアドレスの制限をかけれるみたいです。
  • Google App Scripts からのアクセスで使用されるIPアドレス70以上をローテーションさせて使っているみたいなので、すべてのIPアドレスを登録したら、Google App Scriptsからのアクセスに制限できるかも(未検証)

Discussion