Googleスプレッドシート上に書かれたIPアドレスから地域名(都道府県名)を取得する

Google App Scriptで解決してみたシリーズ。タイトル通りのことを https://ip-api.com/ を利用して解決できないかと思ったので試してみた。ip-api.com を利用すると分間45リクエストであれば無料で利用することができるので試してみる。

API自体はすごくシンプルで以下の様なリクエストに対してJSONでロケーションに関する情報が返ってくる。

☁ ~ http http://ip-api.com/json/8.8.8.8
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Length: 277
Content-Type: application/json; charset=utf-8
Date: Sun, 30 Aug 2020 01:22:29 GMT
X-Rl: 44
X-Ttl: 60
{
  "as": "AS15169 Google LLC",
  "city": "Ashburn",
  "country": "United States",
  "countryCode": "US",
  "isp": "Google LLC",
  "lat": 39.03,
  "lon": -77.5,
  "org": "Google Public DNS",
  "query": "8.8.8.8",
  "region": "VA",
  "regionName": "Virginia",
  "status": "success",
  "timezone": "America/New_York",
  "zip": "20149"
}

上を踏まえてGoogle App Script でAPIの呼び出しとJSON中からのregionNameの取得と簡単なキャッシュを入れたものを用意する。

上の様なスクリプトをスクリプトエディタで登録をしてスプレッドシートから

といった形でセルに入力すると

といった具合に地名を取得できる。(日本国内のIPであれば都道府県名が得られる)