エクセルに記載された住所を郵便番号に変換する方法

エクセルに入力された住所を郵便番号に変換する方法はいくつかありますが、今回は私がすぐ利用、実行することのできたエクセルAPIについて紹介します。

エクセルAPIは、Microsoft ExcelのWEBSERVICE関数を活用して、インターネット上のさまざまなデータをExcelに直接取り込むことができる無料のWebサービスです。Excel 2013以降のバージョンで利用可能で、住所から郵便番号の取得、祝日の一覧取得、電話番号の正規化など、多彩な機能を提供しています。

様々な機能があり魅力的ですが、今回は、住所→郵便番号に絞ってまとめます。

住所→郵便番号変換の実施方法

1.セルに関数を入力する方法

もっとも簡単なのはこの方法です。

郵便番号を表示させたいセルに、以下の関数を入力します。

エクセルの場合)

=WEBSERVICE("https://api.excelapi.org/post/zipcode?address=" & ENCODEURL(A2))

Google SpeadSheetの場合)

=IMPORTXML("https://api.excelapi.org/post/zipcode?address=" & ENCODEURL(A2), ".")

上記は、A2セルの住所を基に対応する郵便番号を取得するコードです。

今回の実行では、セル入力での方法では、数十件実行したあたりでエラーが出るようになりました。ExcelAPIの無料プランでは1日あたり1万件までのアクセス制限があるため、頻回に自動更新されることで上限に達したことが影響しているのではないかと考えています。

2.GoogleスプレッドシートでGASを利用する方法

おすすめはこちらです。

上記でエラーが出た後、Googleスプレッドシートに切り替えGASで実行すると、出力できるようになりました。
エクセルをGoogleDriveにアップロードし、Googleスプレッドシートから開く、などで実行頂けます。
APIの使用上限に達してしまった場合、それが疑われる場合は、アカウントを切り替えてお試しください。

function convertAddressToZipCode() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();  // 最終行を取得

  for (var i = 2; i <= lastRow; i++) {  // 2行目以降を処理
    var address = sheet.getRange(i, 2).getValue(); // B列の住所を取得(2列目)
    
    if (address) {
      var url = "https://api.excelapi.org/post/zipcode?address=" + encodeURIComponent(address);

      try {
        var response = UrlFetchApp.fetch(url);
        var zipCode = response.getContentText();
        sheet.getRange(i, 3).setValue(zipCode); // C列(3列目)に郵便番号をセット
      } catch (e) {
        sheet.getRange(i, 3).setValue("エラー"); // エラー時の処理
      }

      Utilities.sleep(500); // **0.5秒間隔でリクエスト**
    }
  }
}

上記は、2行目以降で、2列目の住所を3列目に郵便番号として出力するGASのスクリプトです。

GASの開き方など操作方法を知りたい方は以下をご参照下さい。

コメント

  1. やまもと より:

    参考になりました!

タイトルとURLをコピーしました