【GAS】施設・店舗名から住所を取得しGoogleスプレッドシートに出力する

スポンサーリンク
Google Apps Script

Google Apps Script(GAS)活用例として、施設・店舗名から住所を取得しGoogleスプレッドシートに出力するスクリプトを作成してみました。以下方法です。

施設・店舗名の一覧表を作成する

まず表を作成。例として、渋谷区のファストフード店を10件並べています。
※スクリプトの処理上B列に施設・店舗名を記載し、シート名を「住所取得ツール」にしています。

スクリプト作成

拡張機能>Apps Script押下でGoogle Apps Scriptを起動。

以下コードを記述

以下のコードを記載。

function getAddress() {

  //施設・店舗名の開始行の定義
  const startRow = 2;

  //対象スプレッドシートの対象シート情報を取得
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("住所取得ツール");
  //対象のデータ範囲を取得する
  var dataRangeBefore = spreadsheet.getDataRange().getA1Notation(); 
  //対象のセル範囲を取得する
  var rangeBefore = spreadsheet.getRange(dataRangeBefore);
  //対象のセル範囲の最終行を取得しlastrowに代入
  var lastrow = rangeBefore.getLastRow();

  //対象分の住所を検索する
  for(var i=startRow; i<=lastrow; i++){
    //施設・店舗名の取得
    var adname = spreadsheet.getRange(i,2).getValue();
    //Geocoderクラスの設定
    var geocoder = Maps.newGeocoder();
    //日本の住所を設定
    geocoder.setLanguage('ja');
    
    //Map情報を取得してaddressに代入
    var address = geocoder.geocode(adname);
    //施設・店舗名の右隣に住所を書き込み
    spreadsheet.getRange(i,3).setValue(address['results'][0]['formatted_address']);
  }

  //表を整形する
  //対象のデータ範囲を取得する(住所設定後のため再度取得)
  var dataRangeAfter = spreadsheet.getDataRange().getA1Notation(); 
  //対象のセル範囲を取得する(住所設定後のため再度取得)
  var rangeAfter = spreadsheet.getRange(dataRangeAfter);
  //見出しをコピペで対応
  var copyRange = spreadsheet.getRange(1, 2);
  var pasteRange = spreadsheet.getRange(1, 3);
  copyRange.copyTo(pasteRange);

  //見出しに「住所」と記載
  spreadsheet.getRange(1, 3).setValue("住所");
  //列幅を自動で調整する
  spreadsheet.autoResizeColumn(3);
  //枠線、中央揃え、フォントを「Meiryo」に設定
  rangeAfter
  .setBorder(true,true,true,true,true,true)
  .setVerticalAlignment("center")
  .setFontFamily("Meiryo");
}

↓記載後

解説

コメントにて処理内容は記述しているため、
住所を出力する部分を少しだけ解説。

  //対象分の住所を検索する  --Point①
  for(var i=startRow; i<=lastrow; i++){
    //施設・店舗名の取得
    var adname = spreadsheet.getRange(i,2).getValue(); 
    //Geocoderクラスの設定  --Point②
    var geocoder = Maps.newGeocoder();
    //日本の住所を設定
    geocoder.setLanguage('ja');
    
    //Map情報を取得してaddressに代入
    var address = geocoder.geocode(adname);
    //施設・住所名の右隣に住所を書き込み
    spreadsheet.getRange(i,3).setValue(address['results'][0]['formatted_address']);
  }

Point①
forループを利用して、B列に並べている対象の施設・店舗名分を一つずつ取得→紐づく住所を取得→施設・店舗名の右隣に取得した住所をセットを実施。

Point②
Class Geocoderのgeocodeメソッドを利用して施設・店舗名から住所を取得する処理を記述。
参考:https://developers.google.com/apps-script/reference/maps/geocoder

実行結果

スクリプト上で実行。

実行後スプレッドシートを見ると、C列に件数分の施設・店舗名の住所が記載されている

終わりに

こういった一覧の住所を割り出したい場面って業務上いろんな役職の人がいろんな場面で発生すると思うので、少しでも参考になれば嬉しいです。

開始地点や書き込む箇所をベタ書きで書いてしまっていますが、その辺を改修すればもっと汎用的に利用できるようにできそう。

読んでいただきありがとうございました!

コメント

  1. Twicsy より:

    Good post! We are linking to this great post on our site.

    Keep up the good writing.

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