Excelに気象庁の実況天気図を表示する
使い方とサーバー設置手順

このパッケージには、次のファイルが含まれます。

weather_chart_demo_ja.xlsm
  マクロと実行ボタンを設定したサンプルブックです。

JmaWeatherChart.bas
  Excel VBAのソースコードです。

get_weather_chart.cgi
  最新の実況天気図を取得して返すPython CGIプログラムです。


1. サンプルブックを使う

1) weather_chart_demo_ja.xlsm を開きます。
2) マクロを有効にできる環境で、シート上の「天気図を表示」ボタンを押します。
3) 最新の日本周辺域実況天気図がシートに表示されます。
4) もう一度ボタンを押すと、前回の画像が新しい画像に置き換わります。

サンプルブックは、chiba-laboのAPIを呼び出す設定になっています。
APIの接続先：
https://www.cibalabo.site/py/get_weather_chart.cgi


2. 自分のサーバーで動かす

ご自身のサーバーでAPIを動かす場合は、次の環境が必要です。

・Python 3.6以降
・Python CGIを公開URLから実行できるWebサーバー
・サーバーからHTTPSで www.jma.go.jp に接続できること

レンタルサーバーによって、Python CGIの利用可否、Pythonの実行パス、CGIの設定方法は異なります。サーバー会社のマニュアルで対応状況をご確認ください。

サーバーへの設置手順

1) get_weather_chart.cgi を、WebからCGIとして実行できるディレクトリーへアップロードします。
2) ファイル先頭のPython実行パスが、ご利用サーバー上のPythonの場所と一致するか確認します。異なる場合は、先頭行をサーバーに合わせます。
3) CGIファイルに実行権限を設定します。一般的には755が使われますが、サーバー会社の指定に従ってください。
4) .cgiファイルをCGIとして実行する設定が有効であることを確認します。
5) ブラウザーでCGIの公開URLを開きます。正常に動作すると、PNG形式の天気図が表示されます。

CGIのURLの例：
https://example.com/cgi-bin/get_weather_chart.cgi

Excel VBAの接続先変更

JmaWeatherChart.basをテキストエディターで開き、次の行を、ご自身のCGIの公開URLに変更します。

Private Const API_URL As String = "https://example.com/cgi-bin/get_weather_chart.cgi"

その後、ExcelのVBAエディターでJmaWeatherChart.basをインポートしてください。


3. VBAをExcelへ取り込む方法

1) Excelで天気図を表示したいブックを開きます。
2) Altキーを押しながらF11キーを押して、VBAエディターを開きます。
3) メニューの「ファイル」から「ファイルのインポート」を選び、JmaWeatherChart.basを指定します。
4) ブックをExcelマクロ有効ブック（.xlsm）形式で保存します。
5) Excelに戻り、Altキーを押しながらF8キーを押します。
6) DisplayLatestJmaWeatherChartを選んで「実行」を押します。

ボタンから実行する場合は、Excelの「開発」タブからフォームコントロールのボタンを配置し、DisplayLatestJmaWeatherChartを割り当てます。

画像は、アクティブなシートのA4セル付近に表示されます。


4. 仕組み

Excel VBAがAPIへ1回リクエストを送ります。サーバー上のPython CGIは、気象庁が公開している画像一覧から最新の日本周辺域実況天気図を見つけ、PNG画像を取得してExcelへ返します。VBAは画像を一時ファイルに保存してシートへ貼り付け、一時ファイルを削除します。

ExcelからAPIサーバーへの通信は1回です。サーバーから気象庁へは、画像一覧の取得とPNG画像の取得が行われます。


5. うまく動かないとき

404 Not Found
URL、CGIファイル名、設置ディレクトリーを確認してください。

403 Forbidden
CGIの実行権限とWebサーバー側のCGI設定を確認してください。

500 Internal Server Error
Python実行パス、CGIのエラーログ、ファイル形式を確認してください。

502 Bad Gateway、または画像取得エラー
サーバーから www.jma.go.jp へHTTPS接続できるか確認し、時間をおいて再度お試しください。

Excelから接続できない
VBAのAPI_URLが正しいか、Windows版Excelを使用しているか確認してください。


6. 注意事項

・このサンプルはWindows版Excelを想定しています。
・ボタンを押した時点で公開されている最新の天気図を取得します。気象庁の発表時刻と観測時刻には時間差があります。
・天気図画像の出典は気象庁です。ご利用や再配布の際は、気象庁のコンテンツ利用条件をご確認ください。
・このAPIは実験用です。短時間に何度も連続して呼び出す使い方は避けてください。
・インターネットから取得したマクロ付きファイルは、Excelが実行をブロックする場合があります。入手元とファイルの内容を確認し、信頼できるファイルだけを実行してください。マクロ全体の保護を無効にしないでください。


参考情報

気象庁「天気図について」
https://www.jma.go.jp/jma/kishou/know/kurashi/tenkizu.html

気象庁「気象庁ホームページのコンテンツ利用について」
https://www.jma.go.jp/jma/kishou/info/coment.html
