16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Apps Scriptを実例交えて基礎からざっくり学ぶAdvent Calendar 2017

Day 10

【Google Apps Script】その10 スプレッドシートにボタンを設置して、ワンクリックで郵便番号から住所を自動入力する

Last updated at Posted at 2017-12-13

この記事はGoogle Apps Scriptを実例交えて基礎からざっくり学ぶ Advent Calendar 2017 10日目の記事です。

本アドベントカレンダーは@rt_pの個人プロジェクトですが、筆者はAteam Brides Inc. Advent Calendar 2017にも参加しています。そちらでも出張版記事を書いているので、覗いていただけると嬉しいです。

はじめに

この時期、年賀状作成の為に住所録を作ったりしますよね。
その時に非常に面倒なのは、何と言っても住所入力だと思います。

今日はスプレッドシートにボタンを設置し、クリックすると郵便番号から住所を自動入力してくれる仕組みを作りたいと思います。

kansei.PNG

APIを叩く仕組みを作る

今回は、zipcloudの郵便番号検索APIを利用します。
http://zipcloud.ibsnet.co.jp/doc/api

まずはスクリプトエディタを開き、以下コードに置き換えて実行します。
スクリプトエディタの開き方や承認が必要ですメッセージが出た際の対処法が分からない場合は
アドベントカレンダー1日目のHello, world!記事をご参照ください。

zip_to_address.gs
function searchZipCode() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveCell();
  var value = range.getValue();
  try {
    var address = requestZipCodeApi(value);
    sheet.getRange(range.getRow(), range.getColumn() + 1, 1, 3).setValues([[address['address1'], address['address2'], address['address3']]]);
  } catch (e) {
    Browser.msgBox(e);
  }
}

// APIを叩く
function requestZipCodeApi(zipCode) {
  var url = 'http://zipcloud.ibsnet.co.jp/api/search?zipcode=' + zipCode;
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText();
  var values = JSON.parse(json);
  
  if (values['message']) {
    throw 'エラー!' + values['message'];
  } else if (!values['results']) {
    throw 'エラー!' + '一致する住所が見つかりません';
  }
  return values['results'][0];
}

エラー処理等はやや簡略化して、シンプルな実装にしています。

getActiveCell()

基本的に今まで出てきた基礎編の内容でカバーされているはずです。
新出は、アクティブのセル範囲を取得するgetActiveCell()ぐらいでしょうか。

上記ソースを入力したら、三角アイコンをクリックしてsearchZipCode()を実行します。

スプレッドシートに何も入力していないと、恐らくメッセージボックスに*エラー!必須パラメータが指定されていません。*と出るはずです。
このメッセージが出たら、APIへリクエストを送れていることが確認できます。

次に、スプレッドシートを以下の通り編集します。

zipcode.PNG

A2にカーソルを合わせた状態(アクティブ状態)にした後、再度スクリプトエディタに戻りsearchZipCode()を実行すると、今度は住所が自動入力されるはずです。

zipcode2.PNG

ボタンを設置

これで住所が自動入力されることは確認できましたが、郵便番号を入れる度にスクリプトエディタを開くのは大変です。
スプレッドシートにボタンを設置し、それをクリックすると今と同じスクリプトが実行されるようにしましょう。

挿入→図形描画を選択。
insert.png

四角形と分かりやすい文字を入れて、保存して閉じるを選びます。

描画された図形の右上にある3つの縦に並んだ点をクリックし、スクリプトを割り当てを選択。

script.png

ダイアログが出るので、クリック時に実行したい関数を入力しOKを押せば完成。

wariate.png

あとは郵便番号を入れて、そのセルを選択した状態でボタンを押すことで住所が自動入力されます。
※ちなみにサンプルは日本で最も有名なテーマパークの住所です。

kansei.PNG

おわりに

今までの基礎編に比べ、だいぶ実用的な機能が出来上がったと思います。
明日からの紹介もお楽しみに!

明日

【Google Apps Script】その11 Webサイトのスクリーンショットを定期的にGoogle Driveに保存する
となります。
毎日特定のWebサイトのスクリーンショット撮影し、Googleドライブに溜めていく方法をご紹介します。

前の記事
【Google Apps Script】その9 エラーを拾う
次の記事
【Google Apps Script】その11 Webサイトのスクリーンショットを定期的にGoogle Driveに保存する

16
12
0

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
16
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?