【Google Apps Script】天気予報をWeb APIで取得する方法

★気に入ったらシェアをお願いします!


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

Google Apps Scriptを使ってチャットワークに色々と送るシリーズです。

前回は当日の予定をGoogleカレンダーから取得してチャットワークに送る方法についてお伝えしました。

毎朝、当日の予定をGoogleカレンダーから取得してチャットワークに送る
Google Apps Scriptを使ってチャットワークに色々と送ることができます。Googleカレンダーから当日の予定を取得してチャットワークに送る方法についてお伝えしたいと思います。

朝に色々とマイチャットに送られるようになってきてとても便利なのですが、他にも知りたいことありますね。

そう、天気予報です。

天気の情報をWeb APIという方法を使って入手して、それを加工してチャットワークに送るというのを目標に何回かに分けてお伝えしたいと思います。

今回はWeb APIとは何か、またGoogle Apps Scriptでlivedoor天気情報のWeb APIからJSON形式の天気予報データを取得してくる方法までをお伝えします。

Web APIとは何か

APIとは「Application Programming Interface」の略で

あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。
引用:IT用語辞典 

です。

今回使用するのはWeb APIなので、Web版のAPIですね。

簡単に言うと指定のURLにアクセスすることで、配列や辞書型のようなデータを返してくれる仕組みと言えます。

Web APIを利用するためには、そのデータ元のサービスがそれぞれでAPIを提供してくれる必要がありますが、実は現在とっても多くのサービスがAPIを提供していまして、様々なデータを取得することができるんです。

例を挙げますと

など様々です。

うう、いくつかはすぐにでも利用したいですね…。

Web APIで受け取るデータの形式とは

それらWeb APIから受け取ったデータはどんな形をしているのでしょうか?

受け取るデータの方式はXMLJSONが代表的です。

XMLとは

XML形式はこんな感じです。

HTMLに似ていますね。XMLは「Extensible Markup Language」の略で「タグ」でコンテンツを囲んで記述する形式です。

JSONとは

一方でJSON形式を見てみましょうか。ちなみに「ジェイソン」と読みます。

…わかりやすいような、わかりにくいような…。

JSONとは「JavaScript Object Notation」の略で、JavaScriptにおけるオブジェクトの表記法を応用したデータ形式です。

…ん?JavaScript?

実際に

JSONはJavaScriptでの扱いが簡単なため、WebサービスやAjaxなどでプログラム間でのデータ交換フォーマットとして多用されている。また、数多くのプログラミング言語でJSONを簡単扱えるようにする追加機能などが公開されている。
引用:IT用語辞典 

とあります。Google Apps ScriptもベースはJavaScriptですし、攻略しておいて損はなさそうです。

Google Apps Scriptで天気情報を取得

今回は天気予報を取得したいのですが、天気情報のAPIを提供するサービスはいくつかあります。

その中で

  • 無料で利用できる(商用利用はNG)
  • レスポンスがJSON形式
  • 日本語の説明があって助かる

ということで、livedoor天気のWeb APIを利用して、天気予報を取得してみたいと思います。

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

livedoor天気からデータを取得するためのリクエストURL

冒頭でWeb APIからデータを取得するには指定のURLにアクセスする、とお伝えしました。

livedoor天気からデータを取得する場合、専用のアドレスが用意されていまして、ベースとしては

http://weather.livedoor.com/forecast/webservice/json/v1

というURLを使います。これに都市別のパラメータであるCityIDを「?city=XXXXXX」という書き方で加えます。

例えば、東京のCityIDは「130010」ですから

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

とすればOKです。

Google Apps Scriptから指定のWeb APIアドレスにリクエストをする

Google Apps Scriptで指定のWeb APIアドレスにリクエストをする場合は

UrlFetchApp.fetch(URL)

というメソッドを使います。

簡単ですね。

例えば、JSONはテキストデータと言ってましたから、以下のようなスクリプトを作ってみました。

ログにいい感じのJSONデータが出力されることを期待して実行をしてみます。

JSONデータをログ出力

…だめですね。わけがわかりません。

受け取ったJSONデータを配列に格納する

受け取ったJSONデータを取り扱う場合は

JSON.parse(レスポンス.getContentText())

とします。

getContentTextメソッドで純粋なテキストデータ部分だけを取り出しJSON.parseメソッドでJSONデータを解析していい感じに配列に格納をします。

これを使って以下のようなスクリプトを組んでみました。

実行しますと、以下のようなログ出力が得られます。

おお、なんとなくそれっぽいですね。

まとめ

ひとまず今回はここまで。

Web APIとは何か、またGoogle Apps Scriptでlivedoor天気のWeb APIにリクエストをする方法についてお伝えしました。

結局はポイントは

  • UrlFetchApp.fetchメソッド
  • JSON.parseメソッド
  • getContentTextメソッド

の3点だけですね。他のWeb APIでも基本的にはリクエストの仕方は同じのはずです。

次回は、いい感じに配列に格納されたJSONデータの中身を調べつつ、いい感じに加工をしてチャットワークに通知をするところまで進めたいと思います。

【GAS】JSON形式のデータを取り出してチャットワークに天気予報を送る
Google Apps Scriptを使ってチャットワークに天気予報を送るシステムを作成中です。今回はJSON形式で受け取ったデータの中から必要な情報を取り出し、チャットワークに送る部分を組みます。

どうぞお楽しみに!

連載目次:初めてのGoogle Apps Scriptで自動でチャットワークに色々と送る

最初のお題にも限らずチャットワークを中心に操作していきます。スプレッドシートやカレンダーをはじめとするGoogleサービスはもちろん、Twitterなどの外部のサービスともAPIで連携させて色々なものをチャットワークに通知してみますよ。
  1. Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる
  2. Google Apps Scriptでチャットワークの名言botを作る方法
  3. Google Apps ScriptでTwitterの検索結果を自動でチャットワークに通知
  4. 【幹事必見!】スプレッドシートの入力が完了したらチャットワークに自動で通知する方法
  5. スプレッドシートのリストアップ件数をGASでチャットワークに通知する
  6. GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信
  7. GASでGoogleアナリティクスの記事ランキングをチャットワークに送る
  8. Google Apps ScriptでWordPressの更新情報をチャットワークに送る
  9. 毎朝、当日の予定をGoogleカレンダーから取得してチャットワークに送る
  10. 【Google Apps Script】天気予報をWeb APIで取得する方法
  11. 【GAS】JSON形式のデータを取り出してチャットワークに天気予報を送る