自動化・効率化ならKTパソコンスクール

powerd by うなぎいもプロジェクト

Google Apps Scriptでジオコーディング、リバースジオコーディング

カテゴリー │Google Apps Script

Google Apps ScriptでGoogleスプレッドシート上でジオコーディング、リバースジオコーディングするプログラムを作りました。

ジオコーディングのシートは下のような状態とします。⇓
Google Apps Scriptでジオコーディング、リバースジオコーディング

スタートボタンをクリックすると次のような状態になります。⇓
Google Apps Scriptでジオコーディング、リバースジオコーディング
きっちりとした住所でなくてもある程度ジオコーディングできるようです。


リバースジオコーディングのシートは下のような状態とします。⇓
Google Apps Scriptでジオコーディング、リバースジオコーディング

スタートボタンをクリックすると次のような状態になります。⇓
Google Apps Scriptでジオコーディング、リバースジオコーディング

コードは以下です。⇓

//ジオコーディングする
function geoCoding() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ジオコーディング');
var address_column = 1; //住所がある列
var latitude_column = 2; //緯度がある列
var longitude_column = 3; //経度がある列
var formated_address_column = 4; //フォーマットされた住所がある列
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var values = sheet.getRange(1, 1, lastrow, lastcol).getValues();
var geocoder = Maps.newGeocoder();
geocoder.setLanguage('ja'); //日本の住所に設定

for (var i=1; i < lastrow; i++) {
var address = values[i][address_column-1]; //住所
var latitude = values[i][latitude_column-1]; //緯度
var longitude = values[i][longitude_column-1]; //経度

//フォーマットされた住所
var formated_address = values[i][formated_address_column-1];

if (address === ''){
continue;
}else if(latitude !== '' && longitude !== '' && formated_address !== ''){
continue;
}

var response = geocoder.geocode(address);
var result = response.results[0];
values.splice(i, 1,
[address,
result.geometry.location.lat,
result.geometry.location.lng,
result.formatted_address]);
}
sheet.getRange(1, 1, lastrow, lastcol).setValues(values);
}

//リバースジオコーディングする
function revereseGeoCoding() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('リバースジオコーディング');
var latitude_column = 1; //緯度がある列
var longitude_column = 2; //経度がある列
var formated_address_column = 3; //フォーマットされた住所がある列
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var values = sheet.getRange(1, 1, lastrow, lastcol).getValues();
var geocoder = Maps.newGeocoder();
geocoder.setLanguage('ja'); //日本の住所に設定

for (var i=1; i < lastrow; i++) {
var latitude = values[i][latitude_column-1]; //緯度
var longitude = values[i][longitude_column-1]; //経度

//フォーマットされた住所
var formated_address = values[i][formated_address_column-1];

if (latitude === '' || longitude === ''){
continue;
}else if(formated_address !== ''){
continue;
}

var response = geocoder.reverseGeocode(latitude, longitude);
var result = response.results[0];
values.splice(i, 1, [latitude, longitude, result.formatted_address]);
}
sheet.getRange(1, 1, lastrow, lastcol).setValues(values);
}


作り方です。
① Googleスプレッドシートを作成し、「ジオコーディング」と「リバースジオコーディング」と名前をつけてシートを作成
② 「ジオコーディング」シートの1行目のA列からD列を住所、緯度、経度、フォーマットされた住所とする
③ 「リバースジオコーディング」シートの1行目のA列からC列を緯度、経度、フォーマットされた住所とする
④ 「ツール」⇒「スクリプトエディタ」としてスクリプトエディタを開き、上のコードをコピペする
⑤ 「ジオコーディング」シートで「挿入」⇒「図形描画」としてボタン図形を作成する(「リバースジオコーディング」シートでも同様)
⑥ 作った図形を右クリック⇒右の3つの点をクリック⇒「スクリプトを割り当て」をクリック⇒「geoCoding」を割り当て(「リバースジオコーディング」シートの図形は「revereseGeoCoding」を割り当て
⑦ ジオコーディングするときは住所の列に値を入れて、ボタンをクリック
⑧ リバースジオコーディングするときは緯度、経度の列に値を入れて、ボタンをクリック

下はGoogle Apps ScriptのGeocoderクラスのリファレンスです。⇓
https://developers.google.com/apps-script/reference/maps/geocoder


  • このエントリーをはてなブックマークに追加
  • LINEで送る

同じカテゴリー(Google Apps Script)の記事


上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
Google Apps Scriptでジオコーディング、リバースジオコーディング
    コメント(0)