こんにちは!
今回はGASを使って特定の地域の天気予報を定期的に取得してみました。
天気予報をAPIから取得する
天気予報はOpenWeatherMapのAPIを活用しました。
https://openweathermap.org/
このままでもWebサイト上で天気予報は見れますが、今回はこちらの情報をAPIを使って取得します。
無料枠では1分間に60回まで、3時間ごとの天気予報を5日分まで取得できます。会員登録することでAPIキーを発行できます。
https://openweathermap.org/price
GASでAPIをたたいてみる
GASで以下のようなスクリプトを書いてAPIから天気予報を取得します。
コードはすごく短くシンプルで指定した都市名の今後の天気が取得できます。
const OPEN_WEATHER_MAP_API_KEY = '取得したAPIキーを入れる';
function getWeatherForecast() {
var city = 'Tokyo';
var url = 'https://api.openweathermap.org/data/2.5/forecast?q=' + city + '&appid=' + OPEN_WEATHER_MAP_API_KEY + '&lang=ja&units=metric';
var response = UrlFetchApp.fetch(url);
Logger.log(response.getContentText());
return response;
}
実行結果
実行してみると以下のようなJSON形式(長いので途中省略)で取得できるので、
あとはJSONパースして必要なデータを抽出すれば欲しいデータが取得できます。
Logging output too large. Truncating output. {"cod":"200","message":0,"cnt":40,"list":[{"dt":1726336800,"main":{"temp":28.57,"feels_like":33.2,"temp_min":28.16,"temp_max":28.57,"pressure":1010,"sea_level":1010,"grnd_level":1008,"humidity":78,"temp_kf":0.41},"weather":[{"id":803,"main":"Clouds","description":"曇りがち","icon":"04n"}],"clouds":{"all":52},"wind":{"speed":7.68,"deg":201,"gust":11.67},"visibility":10000,"pop":0,"sys":{"pod":"n"},"dt_txt":"2024-09-14 18:00:00"}
AIとの連携について
今回は天気予報のAPIを紹介しましたが、ChatGPTやGeminiなどのAIとの連携をするために使いました。
AI関連のAPIにそのまま天気を質問するとハルシネーションにより嘘の天気予報を回答され期待する結果が得られませんでした。(今後改善されてくかとは思いますが)
ですので嘘を言われたらまずい情報は別途取得して取得した情報をもとにAIに加工してもらうのが有効な使い方かな、と思いました。
AIは優秀なのでAPIで取得したJSONを加工無しで渡しても期待する形に加工して良い結果を回答してくれるので便利ですね。