1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

【GAS】地球上のランダムな場所にピンを落とすツールを作成した

Posted at

はじめに

初めまして。黄瀬のん(Xenon_ura118)と申します。
本当の初投稿です。
色々わかっていない所があるかもしれませんが、ご容赦ください。

わたしは普段Twitterに生息しているのですが、プロフィールの現在位置を時々変えております。
(本当の位置を知られないためと、単なるお遊びです)
https://twitter.com/Xenon_ura118
以下のような感じです。緯度、経度を10進法で記載しています。

キャプチャ.PNG

この表記方法をするに伴い、1つの課題が発生しました。
毎回適当な位置情報を考えるのは面倒だなと。
(こんなことやってるのはお前しかいねーよという突っ込みはなしで!)

面倒ならば、ツール化してしまえばよいのでは?

というわけで、タイトルの通り。
GoogleAppsScriptにて、地球上のランダムな場所にピンを落とすツールを作成しました。

ツールの内容

ツールのスプレッドシートは以下の通り。

キャプチャ2.PNG

スクリプトは以下の通りです。

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=" の後ろに、緯度+カンマ+経度をつけています。

このスクリプトをスプレッドシートのボタンに割り当てて…
キャプチャ4.PNG

ツール実行結果

実行すると、ランダムな緯度・経度と、それをピンとして落とした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ができる方は試してみてください。
改善案もお待ちしております。

以上です。お読みいただきありがとうございました!

  1. スタートガイド  |  Maps URLs  |  Google for Developers https://developers.google.com/maps/documentation/urls/get-started?hl=ja

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?