🔖

gas で企業名から、「緯度」「経度」取得のジオコーディング。

2023/11/02に公開

仕組み

・Androidアプリで地図アプリを作成するに辺り、そのマスターデータ作成用に、企業名から「緯度」「経度」を取得して、.csvで出力する。

実機画像

・gas 実行前

・gas 実行後

ソースコード

■ 緯度・経度 取得

GeoCoder.gs
/**
 *  === 緯度・経度 取得
 */
function GeoCoder() {

  const START_ROW = 2;
  const FACILITY_COL = 1;
  const ADDRESS_COL = 2; // 住所名
  const LAT_COL = 3; // 緯度
  const LNG_COL = 4; // 経度
  //Author:夏目智徹(toshiyuki natsume)

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1");
  var lastrow = spreadsheet.getLastRow(); // 最終行取得

 // === 2 ~ 最終行までループ
  for(var i = START_ROW; i <= lastrow; i++) {

    // 1行目の値を取得
    var facility = spreadsheet.getRange(i,FACILITY_COL).getValue();

    var geocoder = Maps.newGeocoder();
    geocoder.setLanguage('ja');

    var response = geocoder.geocode(facility);

    if(response['results'][0] != null) {

      // 緯度
      spreadsheet.getRange(i, LAT_COL).setValue(response['results'][0]['geometry']['location']['lat']);

      // 経度
      spreadsheet.getRange(i, LNG_COL).setValue(response['results'][0]['geometry']['location']['lng']);
    
      // 住所取得
      spreadsheet.getRange(i, ADDRESS_COL).setValue(response['results'][0]['formatted_address']);
    }


  }

■ csv出力(Googleドライブ内へ)

convertToCSV_03.gs
function convertToCSV_03() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); // シート名を指定
  var dataRange = sheet.getDataRange();
  var data = dataRange.getValues();
  
  var csvContent = '';
  
  for (var i = 0; i < data.length; i++) {
    var rowData = data[i];
    
    // 各セルのデータをCSV形式に変換し、空白やタブを除去。
    var rowCSV = rowData.map(function(cellValue) {
      
      var formattedValue = String(cellValue).replace(/[\s\t]+/g, '');
      return formattedValue;
    }).join(',');
    
    csvContent += rowCSV + '\n';
  }
  
  // CSVファイルをダウンロード。
  var csvBlob = Utilities.newBlob(csvContent, 'application/octet-stream', 'geo_001.csv');
  DriveApp.createFile(csvBlob);
  
  SpreadsheetApp.getUi().alert('CSVファイルが作成されました。');
}

Discussion