earthpg:GAS専門のプログラミングスクール

郵便番号で住所検索!Google Apps Script(GAS)を活用したアドバンスガイド

GASで郵便番号から住所を検索したいんだけど、どうやったら始められるかな?
猫男
猫男
catman
catman
よし、それならcatmanが「GASで郵便番号から住所を検索する」方法を簡単に教えてやろう!

GASで郵便番号から住所を検索する基本

まずは、Google Apps Script (GAS) を使って、郵便番号を住所に変換する方法を説明しよう。

スクリプト準備の基礎

GASでの郵便番号から住所検索の第一歩は、準備しておくべきスクリプトだ。以下に使える基本的な構造を示そう。

function searchAddressByPostalCode(postalCode) {
  const url = "https://api.zipaddress.net/?zipcode=" + postalCode;
  const response = UrlFetchApp.fetch(url);
  const json = JSON.parse(response.getContentText());
  
  if (json.code === 200) {
    return json.data.fullAddress;
  } else {
    throw new Error("Address not found");
  }
}

このスクリプトでは、UrlFetchApp.fetch()を使用して外部APIからデータを取得し、JSON.parse()でそのデータを解析する。郵便番号をAPIに送信して、それに対応する住所を受け取ることができる。

APIの仕組み

郵便番号から住所の検索には、APIの利用が必要不可欠だ。上記のスクリプトでは、zipaddress.netというAPIを使用している。

このAPIは郵便番号データベースから住所を返してくれる。

APIを使うんですね!でも、APIキーとかいるのかな?
猫男
猫男
catman
catman
今回のzipaddress.netはAPIキーが不要だから安心して使えるさ。

GASでの郵便番号から住所検索プロジェクトを拡張

次は応用だ。

スプレッドシートとの連携

住所を検索した結果をGoogleスプレッドシートに出力したいこともあるだろう。その場合のサンプルコードは以下の通りだ。

function searchAddressesFromSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow();
  
  for (let i = 2; i <= lastRow; i++) {
    const postalCode = sheet.getRange(i, 1).getValue();
    try {
      const address = searchAddressByPostalCode(postalCode);
      sheet.getRange(i, 2).setValue(address);
    } catch (e) {
      sheet.getRange(i, 2).setValue("Error fetching address");
    }
  }
}

GASのSpreadsheetAppクラスを活用すると、郵便番号リストから一気に住所を取得してスプレッドシートに書き込むことが可能だ。

Error Handling(エラーハンドリング)

エラーの可能性があるため、try-catch文を使って対処しよう。

エラーハンドリングがあると安心できますね。これで失敗しても大丈夫そう!
猫男
猫男

練習問題

  • スクリプトで使用されているAPI以外のAPIを使って住所を取得するように変更してみてください。
  • 住所に関するデータを、特定の条件(例: 都道府県)で絞り込む方法を考えてください。

 

解答・解説

function searchAddressByNewAPI(postalCode) {
  const url = "https://newapi.example.com/?zipcode=" + postalCode;
  const response = UrlFetchApp.fetch(url);
  const json = JSON.parse(response.getContentText());
  
  if (json.status === "success") {
    return json.data.fullAddress;
  } else {
    throw new Error("Address not found");
  }
}

このスクリプトでは、UrlFetchApp.fetch()を用いて新しいAPIにアクセスし、JSONデータを解析した後、住所を取得する。response.getContentText()は、APIから返されるレスポンスを文字列として取得できる。

スクリプトをちゃんと理解できたから、新しいAPIにも挑戦してみるよ!
猫男
猫男
catman
catman
その心構えが大事だ。これで君もGASマスターへの一歩を踏み出せたな!