都道府県が記載されてない住所に都道府県を追加するツール
申込者リストなどにありがちな「都道府県の抜けた住所」を、郵便番号から自動補完するGASツールを作ってみた記録です。
郵便局APIを使った住所取得処理や、つまずいた点など、実体験に基づいた内容をまとめました。
このブログは、Google Apps Script(GAS)を使った自作ツールの記録や、開発の過程での気づきをまとめたものです。
丁寧な解説というより、「こんなこともGASでできるんだ」というアイディアのきっかけになれば幸いです。
やりたかったこと
業務で使う申込者リストの中に、都道府県の記載がない住所がちらほらあります。
郵便番号は書いてあるので届くことは届くのですが、一覧で見るとわかりにくいし、データとしても統一感がなく不便でした。
そこで、郵便番号から都道府県を自動で補完するGASツールを作ることにしました。
使ったロジック・ポイント
GASと郵便局のAPIを使って、都道府県補完の自動処理を行いました。大まかな流れは次の通りです。
① 郵便番号から都道府県を取得
- 郵便局が提供するZIPコードAPIを使用
- 返ってくる住所から都道府県だけを抽出
- 住所欄の先頭に追加
② 都道府県がすでに記載されているかのチェック
- 正規表現で「◯◯県」「◯◯府」「東京都」「北海道」などが先頭にあるか判定
- ある場合はスキップ
③ スプレッドシートへの書き戻し
- スクリプトで行をループ
- 都道府県を付け加えた新しい住所を上書き
コード例
GASの操作が初めての方は、コードを開く・実行する手順をご確認ください。初回実行時の認証については、認証ガイドで紹介しています。
実際に使用したGASコードの簡易版です。A列に郵便番号、B列に住所が入っている前提です。
function addPrefectureToAddress() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues();
for (let i = 1; i < data.length; i++) {
const zip = data[i][0];
const address = data[i][1];
if (address.match(/^(東京都|北海道|大阪府|京都府|.{2,3}県)/)) continue;
const res = UrlFetchApp.fetch("https://zipcloud.ibsnet.co.jp/api/search?zipcode=" + zip);
const json = JSON.parse(res.getContentText());
if (json.results && json.results.length > 0) {
const prefecture = json.results[0].address1;
sheet.getRange(i + 1, 2).setValue(prefecture + address);
}
}
メモ・反省・次回やりたいこと
都道府県の判定ロジックはかなりざっくりなので、県名の誤記や略称があると見落とします。
また、郵便番号の桁数が不正でもエラー処理がなく落ちるので、事前チェックやエラーハンドリングを入れるべきだと感じました。
今後は、郵便番号と住所が一致しているか確認するチェック機能や、未記載住所の抽出機能も加えていきたいと思っています。
関連リンク
次に学べる内容や、関連する実例はこちらをご覧ください。
自分の業務に自動化機能を追加したい方へ
住所の補完・整形など、リストの入力作業を自動化する機能を追加したい方はご相談ください。今の作業と希望する自動化を伺い、対応できる範囲をご案内します。