LoginSignup
6
3

More than 5 years have passed since last update.

Googleスプレッドシートで郵便番号から住所を表示する関数

Last updated at Posted at 2018-03-26

概要

セルに郵便番号を入力することで、住所を表示してくれる関数があったらなぁと思って書きました。
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;
}
6
3
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3