🔖
gas で企業名から、「緯度」「経度」取得のジオコーディング。
仕組み
・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