はじめに
初めまして。黄瀬のん(Xenon_ura118)と申します。
本当の初投稿です。
色々わかっていない所があるかもしれませんが、ご容赦ください。
わたしは普段Twitterに生息しているのですが、プロフィールの現在位置を時々変えております。
(本当の位置を知られないためと、単なるお遊びです)
https://twitter.com/Xenon_ura118
以下のような感じです。緯度、経度を10進法で記載しています。
この表記方法をするに伴い、1つの課題が発生しました。
毎回適当な位置情報を考えるのは面倒だなと。
(こんなことやってるのはお前しかいねーよという突っ込みはなしで!)
面倒ならば、ツール化してしまえばよいのでは?
というわけで、タイトルの通り。
GoogleAppsScriptにて、地球上のランダムな場所にピンを落とすツールを作成しました。
ツールの内容
ツールのスプレッドシートは以下の通り。
スクリプトは以下の通りです。
function randomPinOnTheEarth() {
//スプレッドシートの定義
const sheet = SpreadsheetApp.getActiveSheet()
//緯度(Latitude、横線、-90から90の間)をランダムに設定
let randomLatitude = Math.random()*180-90
//経度(Longitude、縦線、-180から180の間)をランダムに設定
let randomLongitude = Math.random()*360-180
//緯度と経度をスプレッドシートに書き出し
sheet.getRange("B1").setValue(randomLatitude)
sheet.getRange("B2").setValue(randomLongitude)
//GoogleMapのURLを作成
const query = "https://www.google.com/maps/search/?api=1&query="
let googleMapURL = query + randomLatitude + "," + randomLongitude
//URLをスプレッドシートに書き出し
sheet.getRange("B3").setValue(googleMapURL)
}
コードの解説をします。
①緯度、経度の設定について
//緯度(Latitude、横線、-90から90の間)をランダムに設定
let randomLatitude = Math.random()*180-90
//経度(Longitude、縦線、-180から180の間)をランダムに設定
let randomLongitude = Math.random()*360-180
緯度は、10進数で表すと、赤道を0として北が+、南が-になります。
Math.random()
は、0から1の値をランダムで出力するメソッドです。
今回は-90~90の範囲で表したいので、一度*180したあとに90を引いております。
経度は、10進数で表すと、子午線(イギリスのグリニッジ展望台を通る線)を0として東が+、西が-になります。
こちらも緯度で使用した方法を応用して、表したい範囲の数になるよう設定しています。
②GoogleマップのURLについて
//GoogleMapのURLを作成
const query = "https://www.google.com/maps/search/?api=1&query="
let googleMapURL = query + randomLatitude + "," + randomLongitudを
URLの後ろにクエリを付けることによって、Googleマップで特定の場所を指定することができます。1
今回のコードでは、 "https://www.google.com/maps/search/?api=1&query=" の後ろに、緯度+カンマ+経度をつけています。
ツール実行結果
実行すると、ランダムな緯度・経度と、それをピンとして落としたGoogleMapのURLが作成され、指定したセルにセットされます。
作成されたURLをクリックすれば、実際のピンの位置が確認できます。
何回か試行してみて、面白そうな場所に刺さったら、Twitterのプロフィールへ採用しています。
(ただし…体感8割方は海上か南極に刺さります。)
とりあえず、10連ガチャ10回試行してみた結果を貼ります。
①南太平洋
https://www.google.com/maps/search/?api=1&query=-32.90749775388682,172.07398667628303
②北太平洋
https://www.google.com/maps/search/?api=1&query=8.765860550868112,-110.1045576743625
③南極大陸 アンタークティック・アイス・シールド
https://www.google.com/maps/search/?api=1&query=-73.72544341944197,123.19470784231157
④インド洋
https://www.google.com/maps/search/?api=1&query=-48.26487876930393,98.60620472832858
⑤南極大陸 アンタークティック・アイス・シールド(2回目)
https://www.google.com/maps/search/?api=1&query=-74.16066714713948,124.56523526065678
⑥バフィン湾
https://www.google.com/maps/search/?api=1&query=76.87903777499434,-72.460737143642
⑦West Philippine Sea
https://www.google.com/maps/search/?api=1&query=13.557707603163067,116.45680725509925
⑧日本(山口県萩市)
https://www.google.com/maps/search/?api=1&query=34.510466491562,131.18076181231396
⑨中華人民共和国 新疆ウイグル タルバガタイ地区 ウス
https://www.google.com/maps/search/?api=1&query=43.9557241881576,84.52677795729096
⑩イタリア 〒10010 トリノ パラッツォ・カナヴェーゼ
https://www.google.com/maps/search/?api=1&query=45.46045593762787,7.996527378005851
おわりに
GASができる方は試してみてください。
改善案もお待ちしております。
以上です。お読みいただきありがとうございました!
-
スタートガイド | Maps URLs | Google for Developers https://developers.google.com/maps/documentation/urls/get-started?hl=ja ↩