【初心者向けGAS】天気予報APIからのJSONをオブジェクトに変換する方法


weather

photo credit: faungg’s photos Central Park, NYC via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者ノンプログラマー向けとして「GASを使ってSlackにメッセージを送る」を目標に連載をお送りしております。

前回の記事はこちら。

【初心者向けGAS】SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法
初心者ノンプログラマー向けとして「GASを使ってSlackにメッセージを送る」を目標に連載をお送りしております。今回はSlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法です。

GASでスクリプトを書いて、Slackにメッセージを送ることができました。

さて、このシリーズではSlackに天気予報の結果を送りたいので、それに向けて進めていきましょう。

まずは、天気予報の情報を取得するAPI「Weather Hacks」とそのレスポンスをオブジェクトに変換する方法を紹介します。

では、行ってみましょう!

天気予報API「Weather Hacks」

さて、天気予報といってもどこからその情報を取得すればよいでしょうか?

そんな時に、使えるのも「API」です。

Weather Hacksという無料で使用できる天気予報APIがありますので、これを使っていきましょう。

お天気Webサービス仕様 - Weather Hacks - livedoor 天気情報
第三者向け気象データ提供サービス「Weather Hacks」。Webサービス(Livedoor Weather Web Service / LWWS)とRSSフィード(RSS2.0)を中心としたデータを提供しています。

Slack APIのIncoming Webhookでは、決められたURLにPOSTリクエストをすればSlackへの投稿ができました。

Weather Hacksでは、決められたURLにGETリクエストをすることで、天気予報のデータを取得できるのです。

Weather HacksのリクエストURL

Weather HacksのリクエストURLは以下のような形式です。

http://weather.livedoor.com/forecast/webservice/json/v1?city=130010

「130010」の6桁の番号はCityIDというもので都市ごとに振られています。この番号は東京のもので、東京の現時点の天気予報の情報を取得することができます。

各地域のCityIDは以下のページで調べることができます。

1次細分区定義表 - livedoor 天気情報

レスポンスからオブジェクトを取り出す

HTTPレスポンスの内容をログで確認する

Weather HacksではHTTPリクエストの結果として、HTTPレスポンスを受け取れます。

GASでは、fetchメソッドの戻り値がHTTPレスポンスを表す、HTTPResponseオブジェクトとなります。

そこから、内容を取り出すのがgetContentTextメソッドです。

HTTPResponseオブジェクト.getContentText()

では、試しにWeather Hacksへリクエストをして、レスポンスの内容をログ確認してみましょうか。

GETリクエストなのでfetchメソッドの引数はURL文字列を与えるだけでOKです。

実行して、ログを表示してみると…

GASでWeather Hacksにリクエストした際のレスポンスのログ出力

なんじゃこりゃ…いろいろとそれっぽいデータは含まれているように見えますが…

これは、以下が原因です。

  • レスポンスはJSON形式の文字列であり
  • ログの2バイト文字は「\uXXXX」のUnicode文字で出力されている

レスポンスの内容をGASで取り扱えるようにするためには、もうひと工夫必要なわけですね。

JSON文字列をオブジェクトに変換する

HTTPレスポンスからgetContentTextメソッドで取り出したものは、JSONという形式の文字列です。

JSONは「JavaScript Object Notation」の略で、和風に言うと「JavaScriptのオブジェクト表記」ということです。

つまり、JavaScriptのオブジェクトに近い表現てことですね。

なので、JSON形式の文字列をJavaScriptのオブジェクトに変換してくれる便利なメソッドが存在しているのです。

それがJSONオブジェクトのparseメソッドです。

では、これを用いてスクリプトを書き直してみましょう。

JSON.parse(文字列)

レスポンスの内容を、parseメソッドでオブジェクト化して、それをobjectという変数に格納、それをログ出力します。

ログ表示はこちらです。

GASでオブジェクトに変換したJSON文字列をログ出力

おお、だいぶわかりやすくなりました!!

まとめ

以上、天気予報APIからのレスポンスをオブジェクトに変換する方法についてお伝えしました。

API経由でデータを受け取るときにJSON形式の文字列はとても良く使いますので、JSONとは何か、またparseメソッドでいったんオブジェクトに取り出すことは理解しておきましょうね。

次回、変換オブジェクトから目的のものを取り出していきます。

GASで天気予報API Weather HacksのJSONデータから欲しいデータを取得する方法

どうぞお楽しみに!

連載目次:はじめてのSlackアプリでメッセージを投稿する

ビジネスチャットツールSlack、使ってますか?「Slackアプリ」を使うことでGASを通じてメッセージを投稿をすることができます。このシリーズでは初心者向けにSlackアプリの作り方を解説していきます。
  1. 【初心者向けGAS×Slack】はじめてのSlackアプリを作成しよう
  2. 【初心者向けGAS】Slackにメッセージを投稿するIncoming Webhookの最初の一歩
  3. 【初心者向けGAS】SlackアプリのIncoming Webhooksを使ってメッセージを投稿する方法
  4. 【初心者向けGAS】天気予報APIからのJSONをオブジェクトに変換する方法
  5. GASで天気予報API Weather HacksのJSONデータから欲しいデータを取得する方法

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

タイトルとURLをコピーしました