日本の住所正規化関数
Google スプレッドシートのセルに入った日本の住所を、Geolonia normalize-japanese-addresses で正規化するカスタム関数 NORMALIZE_JPN_ADDRESS を追加するアドオンです。
Google Workspace Marketplace で入手
できること
- 表記ゆれのある住所(全角数字、「番地」「号」、漢数字の丁目、旧字体など)を、住所データに合わせた表記に揃えます。
- 都道府県、市区町村、町丁目、番地・号のどこまで判別できたかを「正規化レベル」で判定し、基準に満たない住所をエラーにできます。
- 1 セルずつでも、
A2:A1000のような範囲でもまとめて処理できます。 - 数式を使わずに、メニューから選択範囲をまとめて正規化して値として書き込めます。
- ライセンス版では、メニューから番地・号までの正規化、Google マップの「地図」リンク、緯度経度を選択範囲に一括で書き込めます。
料金
| 無料 | ライセンス版(500円(税込)、買い切り) | |
|---|---|---|
カスタム関数 NORMALIZE_JPN_ADDRESS(町丁目まで、レベル 0〜3) | ○ | ○ |
| メニュー「選択範囲を正規化」 | ○(町丁目まで) | ○(番地・号まで) |
| メニュー「選択範囲に地図リンクを付ける」 | — | ○ |
| メニュー「選択範囲に緯度経度を付ける」 | — | ○ |
無料の範囲は、Geolonia のライブラリの機能をそのまま提供している部分です。ライセンス版は、配信コストの大きい番地・号データと、その上に運営者が作った位置情報の機能です。キーは 1 回の購入で、その Google アカウントのすべてのスプレッドシートで使えます。以後のデータ更新も含みます。
購入は、スプレッドシートの「拡張機能 › 日本の住所正規化関数 › 使い方とライセンス」を開き、サイドバーの「ライセンスキーを購入」から行います(購入したアカウント専用のキーを発行するため、サイドバー経由でないとキーを作れません)。決済は Stripe で行い、運営者はカード情報を受け取りません。表示されたキーを同じサイドバーで登録します。
インストール
- Google Workspace Marketplace からアドオンをインストールします。
- スプレッドシートを開き直すと、メニューの「拡張機能」に「日本の住所正規化関数」が追加されます。「使い方とライセンス」を選ぶとサイドバーに説明、購入リンク、キーの入力欄が出ます。
- セルに
=NORMALIZE_JPN_ADDRESS(A2)のように入力します。
#NAME? になります。使い方
=NORMALIZE_JPN_ADDRESS(A2)
=NORMALIZE_JPN_ADDRESS(A2:A1000)
=NORMALIZE_JPN_ADDRESS("東京都千代田区千代田1−1", 2)
旧名 NORMALZE_JPN_ADDRESS(綴り違い)も同じ動作で残しています。番地・号までの正規化、地図リンク、緯度経度は数式ではなく下のメニューで行います。
メニューから一括処理
住所が入った 1 列(例: A2:A500)を選択し、「拡張機能 › 日本の住所正規化関数」のメニューから実行すると、選択した列の右隣に結果が値として書き込まれます。数式を残したくないときや、一度に数千行を処理したいときはこちらが向いています。
- 選択範囲を正規化: 右隣の 2 列に「正規化した住所」と「到達レベル」(0〜8)を書きます。しきい値は無く、できるところまで正規化します。ライセンス版は番地・号まで、無料版は町丁目まで試みます。
- 選択範囲に地図リンクを付ける(ライセンス版): 右隣の列に、クリックで Google マップが開く「地図」リンクを書きます。番地・号まで判別できない住所は「地図(概略)」として町丁目の代表点を指します。
- 選択範囲に緯度経度を付ける(ライセンス版): 右隣の 3 列に「緯度」「経度」「到達レベル」を書きます。
- 右隣に既に値があるときは上書きの確認が出ます。1 回の実行は 6 分までで、100 行ごとに書き込むため、時間切れでも処理済みの行は残ります。
引数
- address(必須)
- 住所の文字列、または 1 列か 1 行のセル範囲。範囲を渡すと、結果は同じ形で展開されます。展開先のセルが埋まっていると
#REF!になります。 - level(省略可、既定 3)
- 許容する最小の正規化レベル(0〜3)。結果のレベルがこの値に満たない住所はエラーになります。
| level | 意味 |
|---|---|
| 0 | 判別できなくても許容する |
| 1 | 都道府県まで判別できた |
| 2 | 市区町村まで判別できた |
| 3 | 大字・丁目まで判別できた(既定) |
| 8 | 住居表示の街区符号・住居番号、または地番まで判別できた(メニューの一括処理でのみ到達。ライセンス版) |
- カスタム関数は町丁目まで正規化します。4 以上を指定するとメニューへの案内がエラーとして表示されます。
- レベル 3 までは市区町村ごとに 1 回の通信で済むため高速です。レベル 8 は町丁目ごとに追加の通信が必要です。
結果
都道府県 + 市区町村 + 町丁目 + 番地・号 に、正規化できなかった残り(建物名など)を続けた 1 つの文字列を返します。番地・号が確定した場合、残りは半角スペースで区切ります。
岩手県盛岡市内丸10-1 ← レベル 8
大阪府大阪市北区梅田一丁目1-3 ← レベル 8
東京都新宿区西新宿二丁目8-1 都庁第一本庁舎 ← レベル 3(番地データなし)
エラー
- 単セル入力でレベルが足りない場合は
#ERROR!になります。セルにカーソルを合わせると理由が表示されます。IFERRORで既定値に置き換えられます。 - 範囲入力では、その行だけが
#LEVEL 正規化レベルが不足しています(結果 3 < 指定 8)のような文字列になり、他の行は処理されます。 - 通信などに失敗した行は
#ERROR …、制限時間内に処理できなかった行は#TIMEOUT …になります。
制限と注意
- Google スプレッドシートの仕様で、カスタム関数 1 回の実行は 30 秒までです。大量の住所は、レベル 3 を指定するか、範囲を数百行ずつに分けてください。
- 住所データの整備状況により、住居表示が実施されている町丁目でもレベル 8 にならない住所があります(東京都区部の一部など)。この場合は 3 を指定してください。
- 結果はスプレッドシート側で引数ごとにキャッシュされます。住所データが更新されても、引数が同じままでは再計算されません。
- 住所データは運営者の配信サーバー(normalize-jpn-address-data.pizzabunlab.com)から取得しています。データは Geolonia 住所データ v2 から生成したもので、おおむね月に 1 回更新します。配信の停止や変更により本アドオンが動作しなくなる可能性があります。
プライバシー
本アドオンは利用者の情報を収集・保存しません。カスタム関数に渡されたセルの値だけを処理し、住所データを運営者の配信サーバーから取得します。取得の際に住所文字列そのものは送信しませんが、判定した都道府県・市区町村・町丁目に対応するデータファイルの取得リクエストが送られます。通信は Google のサーバーから行われるため、利用者の IP アドレスが配信サーバーに届くこともありません。詳しくはプライバシーポリシーをご覧ください。
謝辞
正規化処理は Geolonia Inc. が MIT ライセンスで公開している normalize-japanese-addresses をそのまま利用しています。住所データは Geolonia 住所データ v2(CC BY 4.0)で、「アドレス・ベース・レジストリ」(デジタル庁)をもとに株式会社 Geolonia が作成したものです。本アドオンはこのデータから生成したファイルを運営者のサーバーで配信しています。素晴らしいライブラリとデータを公開してくださっている Geolonia とデジタル庁に感謝します。
ライセンスとソースコード
本アドオンは MIT ライセンスで公開しています。ソースコードは https://github.com/TODO_OWNER/normalize-jpn-address にあります。同梱しているライブラリのライセンスはリポジトリ内の THIRD_PARTY_NOTICES.md を参照してください。