Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

セルに郵便番号を入力することで、住所を表示してくれる関数があったらなぁと思って書きました。
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;
}
KensukeSakakibara
ずっとお絵描きをして生きてきましたが、趣味だったプログラミングがいつのまにか本職になっていたWEBプログラマです。 高負荷環境でのLAMPが得意でソシャゲとか作ってました。 PerlからのJavaからのPHPerで、次はGoがやりたいと思ってますが現在はUnityでC#が多いです。 あと電子工作とかも割と好きでAVR派です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away