郵便番号で住所検索!Google Apps Script(GAS)を活用したアドバンスガイド
GASで郵便番号から住所を検索したいんだけど、どうやったら始められるかな?

猫男

catman
よし、それならcatmanが「GASで郵便番号から住所を検索する」方法を簡単に教えてやろう!
GASで郵便番号から住所を検索する基本
まずは、Google Apps Script (GAS) を使って、郵便番号を住所に変換する方法を説明しよう。
スクリプト準備の基礎
GASでの郵便番号から住所検索の第一歩は、準備しておくべきスクリプトだ。以下に使える基本的な構造を示そう。
function searchAddressByPostalCode(postalCode) {
const url = "https://api.zipaddress.net/?zipcode=" + postalCode;
const response = UrlFetchApp.fetch(url);
const json = JSON.parse(response.getContentText());
if (json.code === 200) {
return json.data.fullAddress;
} else {
throw new Error("Address not found");
}
}
このスクリプトでは、UrlFetchApp.fetch()を使用して外部APIからデータを取得し、JSON.parse()でそのデータを解析する。郵便番号をAPIに送信して、それに対応する住所を受け取ることができる。
APIの仕組み
郵便番号から住所の検索には、APIの利用が必要不可欠だ。上記のスクリプトでは、zipaddress.netというAPIを使用している。
このAPIは郵便番号データベースから住所を返してくれる。
APIを使うんですね!でも、APIキーとかいるのかな?

猫男

catman
今回のzipaddress.netはAPIキーが不要だから安心して使えるさ。
GASでの郵便番号から住所検索プロジェクトを拡張
次は応用だ。
スプレッドシートとの連携
住所を検索した結果をGoogleスプレッドシートに出力したいこともあるだろう。その場合のサンプルコードは以下の通りだ。
function searchAddressesFromSheet() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
for (let i = 2; i <= lastRow; i++) {
const postalCode = sheet.getRange(i, 1).getValue();
try {
const address = searchAddressByPostalCode(postalCode);
sheet.getRange(i, 2).setValue(address);
} catch (e) {
sheet.getRange(i, 2).setValue("Error fetching address");
}
}
}
GASのSpreadsheetAppクラスを活用すると、郵便番号リストから一気に住所を取得してスプレッドシートに書き込むことが可能だ。
Error Handling(エラーハンドリング)
エラーの可能性があるため、try-catch文を使って対処しよう。
エラーハンドリングがあると安心できますね。これで失敗しても大丈夫そう!

猫男
練習問題
- スクリプトで使用されているAPI以外のAPIを使って住所を取得するように変更してみてください。
- 住所に関するデータを、特定の条件(例: 都道府県)で絞り込む方法を考えてください。
解答・解説
function searchAddressByNewAPI(postalCode) {
const url = "https://newapi.example.com/?zipcode=" + postalCode;
const response = UrlFetchApp.fetch(url);
const json = JSON.parse(response.getContentText());
if (json.status === "success") {
return json.data.fullAddress;
} else {
throw new Error("Address not found");
}
}
このスクリプトでは、UrlFetchApp.fetch()を用いて新しいAPIにアクセスし、JSONデータを解析した後、住所を取得する。response.getContentText()は、APIから返されるレスポンスを文字列として取得できる。
スクリプトをちゃんと理解できたから、新しいAPIにも挑戦してみるよ!

猫男

catman
その心構えが大事だ。これで君もGASマスターへの一歩を踏み出せたな!