GASで簡単!スプレッドシート上で郵便番号から住所を自動入力する方法
GASを使ってスプレッドシート上で郵便番号から住所を自動入力することってできるのかなぁ…難しそうだけど、やってみたいな…
猫男
catman
それならcatmanに任せておくんだ。GASを使えばスプレッドシートで郵便番号から住所を簡単に取得するスクリプトを組めるよう。
GASで郵便番号から住所を取得する方法
GAS郵便番号から住所を取得するには、外部のAPIを利用するのが一般的です。
今回は「Zipcoda API」を使用して住所を取得する方法を紹介します。
外部APIを使った住所取得の基本コード
次に示すスクリプトは、GASを使って郵便番号から住所を取得する基本のスクリプト構成です。
function getAddressFromPostalCode(postalCode) {
postalCode = String(postalCode)
.replace('.0', '')
.replace('-', '')
.replace(/\D/g, '')
.padStart(7, '0');
var url = 'https://zipcoda.net/api?zipcode=' + postalCode;
var response = UrlFetchApp.fetch(url, {
muteHttpExceptions: true
});
var statusCode = response.getResponseCode();
var text = response.getContentText();
Logger.log(url);
Logger.log(statusCode);
Logger.log(text);
if (statusCode !== 200) {
return 'APIエラー: ' + statusCode;
}
var data = JSON.parse(text);
if (data.items && data.items.length > 0) {
var item = data.items[0];
return item.components[0] + item.components[1] + item.components[2];
}
return '住所が見つかりませんでした';
}
この関数は、郵便番号を引数として渡すことで、該当の住所を取得することができます。
スプレッドシート上での自動入力
取得した住所をスプレッドシートに入力するために、次のようにスクリプトを仕上げます。
function fillAddress() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getLastRow();
for (var i = 2; i <= lastRow; i++) {
var postalCode = sheet.getRange(i, 1).getValue();
var address = getAddressFromPostalCode(postalCode);
sheet.getRange(i, 2).setValue(address);
}
}
このスクリプトは、スプレッドシートの1列目にある郵便番号を基に、2列目に住所を自動で入力します。
郵便番号は2行目以降に記入
実践
例えば、こんな感じでスプレッドシートを用意。

この状態でfillAddressを実行すると、

こんな感じで、B列に住所はいるんですね。
ぜひ読者の方も1つ試してみてください。
スクリプトを書くことで郵便番号から住所が自動で入力されるなんて、すごいですね!
猫男
catman
しっかり試すんだ。GASはスプレッドシートの強力な味方になるさ。
