スプレッドシート上で住所補正を行う(Geocoding API)
はじめに
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(/[0-9]/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) + '®ion=' + 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