【Excel VBA】Web APIで天気情報を取得する方法|OpenWeatherMap API入門

Excel VBAで業務効率化ツールを作成していると、Web上の情報を取得したい場面があります。

たとえば、天気情報、為替レート、郵便番号から住所を取得する処理など、外部サービスの情報をExcelに取り込みたいケースです。

Web上の情報を取得する方法として、Webスクレイピングを思い浮かべる方も多いかと思います。

Webスクレイピングは、Webページ上に表示されている文字や表の情報を取得する方法です。

一方で、サービス側があらかじめデータ取得用の仕組みを用意している場合は、Web APIを利用して情報を取得することもできます。

今回は、Web APIの入門として、OpenWeatherMapという天気情報サービスを使い、ブラウザから天気情報を取得する方法を紹介します。

今回はVBAのコードを書く前段階として、まずは「Web APIとはどのようなものなのか」を実際に体感することを目的にしています。

Web APIとは

Web APIとは、簡単にいうと、Web上のサービスから必要なデータを取得するための仕組みです。

通常、Webサイトを見る場合は、ブラウザでページを開いて、人が画面上の文字や画像を確認します。

一方、Web APIでは、人が読むための画面ではなく、プログラムが扱いやすい形式でデータが返ってきます。

そのため、Excel VBAなどのプログラムからWeb APIにアクセスすれば、取得したデータをExcelに出力したり、集計したり、別の処理に利用したりできます。

Webスクレイピングの場合、Webページの構造が変わると処理が動かなくなることがあります。

しかし、Web APIはデータ取得用の窓口として用意されているため、条件が合えばスクレイピングよりも安定してデータを取得できる場合があります。

OpenWeatherMapとは

今回使用するのは、OpenWeatherMapという天気情報を取得できるサービスです。

OpenWeatherMapでは、現在の天気や天気予報などの気象データをAPI経由で取得できます。

今回はこのOpenWeatherMapを使って、指定した場所の天気情報を取得してみます。

なお、OpenWeatherMapのAPIを使用するためには、事前にアカウントを作成し、APIキーを取得する必要があります。

APIキーとは、APIを利用するための認証キーのようなものです。

パスワードに近いものなので、ブログやSNSなどで公開しないように注意してください。

OpenWeatherMapのアカウントを作成する

まずは、OpenWeatherMapの公式サイトにアクセスします。

画面右上にある「Sign In」からログイン画面に進みます。

まだアカウントを持っていない場合は、「Create Account」からアカウントを作成します。

アカウント作成画面では、ユーザー名、メールアドレス、パスワードなどを入力します。

入力内容に問題がなければ、アカウントを作成します。

登録したメールアドレスに確認メールが届く場合がありますので、必要に応じてメール認証も行ってください。

APIキーを確認する

アカウント作成後、OpenWeatherMapにログインします。

ログイン後のメニューから「My API keys」を開きます。

この画面に表示されているキーが、APIを利用するために必要なAPIキーです。

このAPIキーをURLの中に含めることで、OpenWeatherMapのAPIから天気情報を取得できます。

なお、APIキーは発行直後だとすぐに使用できない場合があります。

うまく動作しない場合は、少し時間を置いてから再度試してみてください。

APIのURLを確認する

次に、OpenWeatherMapで用意されているAPIの仕様を確認します。

今回は、現在の天気情報を取得するために「Current Weather Data」を使用します。

APIの説明画面を見ると、リクエスト用のURLと、指定できるパラメータが記載されています。

基本となるURLは以下のような形です。

https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key}https://api.openweathermap.org/data/2.5/weather

このURLの後ろに、取得したい場所の緯度・経度や、APIキーなどの情報を付け加えていきます。

  • lat:緯度
  • lon:経度
  • appid:APIキー 

URLの中でパラメータを指定する場合は、最初に ? を付けます。

複数のパラメータを指定する場合は、& でつなげます。

緯度と経度を確認する

天気情報を取得するためには、対象となる場所の緯度と経度が必要です。

今回は例として、東京駅周辺の天気情報を取得してみます。

Googleマップで「東京駅」と検索し、マップ上で右クリックをすると、緯度・経度を確認できます。

ブラウザでAPIを実行する

それでは、実際にブラウザでAPIを実行してみます。

以下のようなURLを作成します。

https://api.openweathermap.org/data/2.5/weather?lat=35.6812405&lon=139.7649361&units=metric&lang=ja&appid=自分のAPIキー

最後の 自分のAPIキー の部分には、OpenWeatherMapで取得したAPIキーを入力してください。

このURLをブラウザのアドレスバーに入力して実行すると、天気情報が表示されます。

表示された内容を見ると、気温、湿度、天気の説明、風速などの情報が含まれていることがわかります。

一見すると少し読みにくいですが、これはJSONという形式でデータが返ってきているためです。

今後、VBAからWeb APIを利用する場合は、このJSON形式のデータを取得し、必要な項目だけを取り出してExcelに出力するような処理を作っていきます。

エラーが表示される場合

APIを実行したときに、エラーが表示される場合もあります。

たとえば、APIキーが間違っている場合や、緯度・経度などのパラメータが不足している場合です。

エラーが表示された場合は、まず以下の点を確認してください。

  • APIキーが正しく入力されているか
  • APIキーの前後に不要なスペースが入っていないか
  • latlon の値が正しく指定されているか
  • URL内の ?& の位置が間違っていないか
  • APIキー発行直後の場合、少し時間を置いてから試しているか

特に初心者のうちは、URLの一部が抜けていたり、記号が全角になっていたりするだけでもエラーになります。

うまくいかない場合は、URLを一つずつ確認してみてください。

まとめ

今回は、OpenWeatherMapのWeb APIを使って、ブラウザから天気情報を取得する方法を紹介しました。

今回行った内容は以下の通りです。

  • OpenWeatherMapのアカウントを作成する
  • APIキーを取得する
  • APIのURLとパラメータを確認する
  • 緯度・経度を指定する
  • ブラウザからAPIを実行する
  • JSON形式の天気情報を確認する

今回はまだVBAのコードは使用していません。

しかし、ブラウザだけでもAPIにアクセスしてデータを取得できることが確認できたかと思います。

Web APIの仕組みが理解できると、VBAで取得できる情報の幅が大きく広がります。

次回は、今回取得したJSON形式のデータを、VBAから取得する方法について紹介していきたいと思います。

最後に

いかがでしたでしょうか。

今回は、OpenWeatherMapのAPIキーを取得し、ブラウザから天気情報を取得する方法について紹介しました。

Web APIは少し難しそうに感じるかもしれませんが、まずは今回のようにブラウザでURLを実行してみると、どのような仕組みでデータが返ってくるのか理解しやすくなります。

Excel VBAからWeb APIを扱えるようになると、天気情報だけでなく、さまざまな外部データをExcelに取り込めるようになります。

次回以降は、今回取得したJSON形式のデータを、実際にVBAから取得してExcelで扱う方法について紹介していきたいと思います。

少しでもVBA開発の参考になれば幸いです。

開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。

そんな方はいつでもお気軽にご相談ください。

また、本ブログからご依頼いただいた方については割引特典がございますので、

ご不明点と合わせてメッセージをいただけると幸いです。

Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!

Webスクレイピング以外にもWebアプリの開発サービスも出品しております。

こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、

お気軽にご相談ください。

スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA