概要
セルに郵便番号を入力することで、住所を表示してくれる関数があったらなぁと思って書きました。
GoogleAPIに住所検索があるので今回はそれを利用しています。
<2019年1月11日追記>
どうも現在はAPIキーの設定が必要になっているようで、Googleの「Geocoding API」を有効にしてkey=APIキーをURLに追加する必要があります。
別のAPI版も作成しましたのでコチラでも良いかもしれません。
使い方
下記をスクリプトエディタにコピペすれば関数を利用できるようになります。
=ZIP_ADDRESS("154-0004","prefecture")
みたいな感じ。
function ZIP_ADDRESS(zip,part)
{
var response = UrlFetchApp.fetch('https://maps.googleapis.com/maps/api/geocode/json?language=ja&sensor=false&address=' + zip);
var results = JSON.parse(response.getContentText()).results;
var address = results[0].address_components;
var return_name = "";
switch (part){
case "country":
return_name += _get_long_name(address, "country");
break;
case "prefecture":
return_name += _get_long_name(address, "administrative_area_level_1");
break;
case "address1":
return_name += _get_long_name(address, "administrative_area_level_2");
return_name += _get_long_name(address, "locality");
return_name += _get_long_name(address, "sublocality_level_1");
break;
case "address2":
return_name += _get_long_name(address, "sublocality_level_2");
return_name += _get_long_name(address, "sublocality_level_3");
return_name += _get_long_name(address, "sublocality_level_4");
break;
case "address3":
return_name += _get_long_name(address, "premise");
break;
}
return return_name;
}
// 取得した配列からlong_nameを抽出する関数
function _get_long_name(address, type_name)
{
var long_name = "";
for (var i = 0; i < address.length; i++) {
if (0 <= address[i].types.indexOf(type_name)) {
long_name = address[i].long_name;
break;
}
}
return long_name;
}