3
3

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 3 years have passed since last update.

GASで住所から郵便番号を取得して、スプレッドシートに出力する

Last updated at Posted at 2021-11-04

#背景
スクレイピングで取得したとある複数の企業情報において、住所はあるが、郵便番号がないパターンがあった。元々、スプレッドシートに情報をまとめていたので、GASを使って住所から郵便番号を取得してみた。

#そもそもGASって
初めて使うので、ちょっと説明。

Google Apps Script(略称GAS/ガス)とは、Googleによって開発されたスクリプトプラットフォームである軽量のアプリケーション開発のためのGoogleのワークスペースプラットフォーム。 主にGoogleのサービスを自動化するスクリプト言語である。JavaScriptがもとになっているため汎用性が高く、開発環境はGoogle Chromeだけでいいのでプログラミング初心者が始めやすい言語の1つである。

wikipedia

GASの開発方式には2種類あるため、作りたいプログラムによって使い分ける必要がある。

  • スタンドアロン型(ドキュメントやスプレッドシートなどと連携を行わなくてもよい場合)
  • コンテナバインド型(ドキュメントやスプレッドシートなどと連携を行う場合)

今回はコンテナバインド型で実施。

#使い方

  1. Googleスプレッドシートを新規作成
  2. ツールタブから「スクリプトエディタ」を開く
  3. コード書く

#スプレッドシートの中身

情報取得日 会社名 住所 郵便番号
2021/11/1 A 株式会社 東京都新宿区ほげほげ
2021/11/2 B 株式会社 東京都港区ほげほげ
2021/11/3 C 株式会社 東京都千代田ほげほげ

#コード

function searchZip() {
  
  var response;
  var zip;
  var mDiff;
  var mStart  = new Date();
  var url = 'https://google.co.jp/maps/search/';
  // シート名を記入
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('住所から郵便番号');

  // 必要なデータ(住所と郵便番号の2列)を配列に
  var lastRow = sheet.getLastRow();
  var values = sheet.getRange(2,3,lastRow-1,2).getValues();
  
  try {
    
    values.forEach(function(value) {

      // value[0]:住所
      // value[1]:郵便番号

      // 既に入力済みは無視
      if (value[1].length > 0) {
        return;
      }

      // 6分の制限時間を超えないよう5分くらいでやめる
      mDiff = new Date() - mStart;
      if (mDiff > 300000) {
        return;
      }
      
      // グーグルマップで検索
      response = UrlFetchApp.fetch(url + value[0]).getContentText();
      
      // 検索結果に郵便番号があるかチェック
      zip = response.search('〒');
      
      if (zip >= 0) {
        
        // 郵便番号を取得
        value[1] = response.substr(zip + 1, 8);
      } else {
        
        // 取得できなかった住所はログに
        Logger.log(value[0]);
      }
      
      // 1秒間隔でAPIアクセス
      Utilities.sleep(1000);
    });

  } catch(e) {
    
    // 何かエラーがあれば出力
    Logger.log(e);
  }
    
  // データを戻す
  sheet.getRange(2,5,lastRow-1,2).setValues(values);  
}

GAS上でコードを書いて保存して実行する。
すると、スプレッドシート内の郵便番号が追記されていく。

便利。自動化万歳。

3
3
1

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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?