住所・地名リストからそれぞれの標高を調べるGoogle Apps Scriptです。洪水、浸水のリスク調査などに使えるかもしれません。
特にありません。今お使いのスプレッドシートに組み込めます。
標高といえば山かなと思い、まずは有名な山。あとは高層建造物、海抜マイナスメートルの地点も入れてみました。
上のメニューにある「スクリプト実行」から「地名から標高を取得する」を実行します。
標高が出力されました。単位はメートルです。
富士山は一般的には3,776メートルとされていますが、帰ってきた値は約3730メートルと、ちょっとずれがあるようです。
海外の山も誤差がありつつもほぼ正解が返っていますね。
東京タワーとスカイツリーは、建造物自体の高さは標高とは関係ないので、こちらも予想通り。
海抜マイナスメートル地点もちゃんと返ってきてすごい。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00119/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('地名から標高を取得する', 'get_elevation_from_place_name');
// メニューを画面に追加する
menu.addToUi();
}
function get_elevation_from_place_name() {
// アクティブなスプレッドシートを開く
const ss = SpreadsheetApp.getActiveSpreadsheet();
// アクティブなシートを開く
const sheet = ss.getActiveSheet();
// シートに入力されている地名を取得する。使用されている範囲のオブジェクトを取得
let range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
// セルの値を取得する
let values = range.getValues();
// 地名の数だけループ。1行目は項目名なのでiの初期値は1。
for (let i = 1; i < values.length; i++) {
// 地名からジオコーディングするが、失敗した場合にそなえてtry catchする。失敗した場合はスキップする。
try {
// 地名から座標を取得する
let geocode = Maps.newGeocoder().geocode(values[i][0]);
let loc_lat = geocode['results'][0]['geometry']['location']['lat'];
let loc_lng = geocode['results'][0]['geometry']['location']['lng'];
// 座標から標高を取得する
let elevation = Maps.newElevationSampler().sampleLocation(loc_lat, loc_lng);
// 地名の右のセルに書き込む。
range = sheet.getRange(i + 1, 2);
range.setValue(elevation['results'][0]['elevation']);
} catch (e) {
// ジオコーディングに失敗した場合はスキップする
continue;
}
}
}