スプレッドシート:ZIPファイル(CSVファイルを圧縮)をダウンロードして表示する(郵便データを利用)

日本郵便に郵便番号データが公開されています。

本ファイルは、 CSVファイルをZIP圧縮ファイルです。

このファイルをスプレッドシートに読み込むました。

スプレッドシートに 郵便番号データを読み込む方法

  1. 郵便番号データをダウンロード。
  2. 1のファイルを解答。
  3. エディタで2のファイルを表示しする。
  4. 別名保存する。保存時に、文字コードを(Unicode(UTF-8))にする。(読み込み時は(shift-JIS))。(これを実施しないと、スプレッドシートで文字化けします。)
  5. 4のファイルをGoogleドライブにアップロードする
  6. アップロードしたファイルをダブルクリックし、表示する
  7. Googleスプレッドシートで開く」を押す。
  8. スプレッドシートファイルに変換できました。

非常に大変です。

Google Apps Script (GAS)を利用した場合の流れ

  1. 郵便番号データファイルをダウンロードする。
  2. 1のファイルを解答する。
  3. スプレッドシートに表示する。

Google Apps Script (GAS)の内容

 【GAS】郵便局のサイトから郵便番号データをそのままスプレッドシートに取り込む

 に記述されている「Utilities.parseCsv()」使った場合を利用しました。

 GASを実行するだけで、スプレッドシートに郵便番号データが取得されます。

以下、GASの内容

function getPos() {

 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = spreadsheet.getSheetByName("TEST2"); //TEST2に本ファイルを取り込むようにしました。

// zipフィアル取得
  var url = "https://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip";
  var zipblob = UrlFetchApp.fetch(url).getBlob();

// 解凍
  var unzipblob = Utilities.unzip(zipblob);

// データ取得
  var data = unzipblob[0].getDataAsString("Shift_JIS");

// 2次元配列に転換
  var ary = Utilities.parseCsv(data);

// シートに反映
  sheet.getRange(1,1,ary.length,15).setValues(ary);

}

問題点

GASの終了までに、5分程度かかりました。そのため、パソコン・ネットワークの状態によっては、GASの制限(スクリプト実行時間:6分)に達してしまう場合があります。