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

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

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

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818350/bd087ad1-fd89-22c9-0719-28f8db33fe48.png)

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

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

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

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

![キャプチャ2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818350/0853f7fb-fbce-6195-977b-aea642e6a609.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3818350/1cd52780-5168-71d3-7b64-6686215d1168.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