郵便番号を入力するたびに住所を手入力していませんか。特に顧客リストや配送先データを扱うとき、大量の住所入力はミスや手間の原因になります。この記事では、無料の郵便番号API「Zipcloud」をGoogleスプレッドシートで利用し、郵便番号を入力するだけで住所を自動補完する方法を解説します。具体的な関数やスクリプトの設定手順を紹介するので、業務効率を大幅に改善できます。
【要点】Zipcloud APIで住所を自動補完する3つのステップ
- Apps Scriptでカスタム関数を作成: Google Apps Script を使って、郵便番号から住所を取得するカスタム関数を定義します。
- UrlFetchAppでZipcloud APIを呼び出し: スクリプト内でUrlFetchApp.fetchを使ってAPIにリクエストを送り、JSONデータを取得します。
- JSONパースで住所を抽出: 返ってきたJSONから住所情報を取り出し、スプレッドシートのセルに自動入力します。
ADVERTISEMENT
目次
Zipcloud APIとは何か
Zipcloudは、郵便番号から住所情報を取得できる無料のWeb APIサービスです。リクエストURLに郵便番号を指定すると、JSON形式で都道府県、市区町村、町域名などが返ってきます。Googleスプレッドシートには標準でJSONを直接扱う関数がありませんが、Apps Scriptを利用すればAPIとの連携が簡単に実現できます。
住所自動補完を実現する手順
ここでは、Apps Scriptを使ってカスタム関数「ZIPADDRESS」を作成し、郵便番号から住所を自動入力する方法を説明します。
1. スクリプトエディタを開く
- 拡張機能メニューを開く
スプレッドシートのメニューバーから「拡張機能」→「Apps Script」をクリックします。 - 新しいスクリプトファイルを作成
スクリプトエディタが開いたら、デフォルトの「コード.gs」にコードを記述します。
2. カスタム関数のコードを記述する
- 関数名を定義
以下のコードをコピーして貼り付けます。関数名は「ZIPADDRESS」としています。第一引数に郵便番号(7桁の文字列)を受け取ります。 - APIリクエストとパース処理
UrlFetchApp.fetchでZipcloud APIを呼び出し、JSON.parseでデータをパースします。エラーが発生した場合は適切なメッセージを返します。
/**
* 郵便番号から住所を取得するカスタム関数
* @param {string} zipcode 郵便番号(例: "100-0001" または "1000001")
* @return {string} 住所
*/
function ZIPADDRESS(zipcode) {
// ハイフンがある場合は削除
var zip = zipcode.replace(/[^0-9]/g, '');
if (zip.length !== 7) {
return "郵便番号は7桁で入力してください";
}
var url = "https://zipcloud.ibsnet.co.jp/api/search?zipcode=" + zip;
try {
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
if (json.results) {
var result = json.results[0];
var address = result.address1 + result.address2 + result.address3;
return address;
} else {
return "該当する住所が見つかりませんでした";
}
} catch (e) {
return "エラーが発生しました: " + e.message;
}
}
3. スクリプトを保存して許可する
- プロジェクトを保存
スクリプトエディタのフロッピーディスクアイコンまたは「Ctrl+S」で保存します。プロジェクト名は任意です。 - 初回実行時の認証
関数をスプレッドシートで使用する前に、一度スクリプトエディタ内で関数を実行して認証を済ませます。実行ボタンをクリックし、権限の確認で「許可」を押します。
4. スプレッドシートで関数を使う
- 郵便番号を入力する
任意のセルに郵便番号(例: “100-0001”)を入力します。 - 住所を表示するセルに関数を入力
隣のセルに「=ZIPADDRESS(A1)」(A1に郵便番号がある場合)と入力すると、住所が自動で表示されます。 - オートフィルで一括適用
関数を入力したセルの右下をドラッグして、他の行にもコピーすれば一括で住所補完ができます。
利用時の注意点と失敗例
APIの利用制限に注意する
Zipcloud APIは無料ですが、アクセス制限が設けられています。1秒間に5リクエスト程度が推奨されており、短時間に大量のリクエストを送ると制限される可能性があります。大量データを処理する場合は、後述するキャッシュやバッチ処理を検討してください。
ネット接続が必要
この方法はインターネットを経由してAPIを呼び出すため、オフライン環境では動作しません。また、APIサーバーのメンテナンス時などは一時的に利用できなくなることがあります。
郵便番号の形式
関数内でハイフンを自動除去していますが、「070-0001」のような7桁以外の入力はエラーになります。入力セルにデータの入力規則を設定して、7桁の数字のみを受け付けるようにすると安全です。
スクリプトの実行時間制限
Apps Scriptには1回の実行あたり6分の制限があります。数百行以上のデータを処理する場合、処理が途中で止まる可能性があります。その場合は、スクリプトを分割したり、トリガーを使って段階的に実行する方法も検討してください。
ADVERTISEMENT
IMPORTDATAとカスタム関数の比較
| 比較項目 | IMPORTDATA関数 | カスタム関数(Apps Script) |
|---|---|---|
| 取得できるデータ形式 | CSV/TSVのみ(JSONは不可) | JSONなど任意の形式をパース可能 |
| リアルタイム更新 | 自動更新(1時間ごとなど) | 手動またはトリガーで更新 |
| カスタマイズ性 | 低い(引数指定のみ) | 高い(条件分岐やエラー処理を記述可能) |
| API利用制限の影響 | 制限対象外(Google側が取得) | 直接リクエストするため制限を受ける |
まとめ
この記事では、Zipcloud APIをGoogleスプレッドシートで利用して郵便番号から住所を自動補完する方法を解説しました。Apps Scriptでカスタム関数を作成することで、JSON形式のAPIデータを簡単に取り込めるようになります。初回設定は少し手間ですが、一度作れば何度でも利用でき、住所入力の手間とミスを大幅に削減できます。応用として、複数の郵便番号を一気に処理するバッチ関数や、他のAPI(天気情報など)との連携にも挑戦してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
