#はじめに
「GoogleAppScriptでサーバー要らずのSlackBotを作る(前編)」からの続きになります。
後編では、前編で作成したbotに天気予報を通知する機能を追加していきます
#天気予報API
無料で使え、ユーザー登録などの手間がかからないということで
Livedoor Weather Web Service を使うことにしました
http://weather.livedoor.com/forecast/webservice/json/v1?city=
+地域のID
でアクセスできます。地域IDはAPI公式サイトから見ることができるので探してみてください
#GASを書いていく
//初期化
var weatgerResponse = UrlFetchApp.fetch("http://weather.livedoor.com/forecast/webservice/json/v1?city=130010");
var weatherJson = JSON.parse(weatgerResponse.getContentText());
//今日の天気
function TodayWeatherMessage()
{
var message;
message = ":sunny: 今日の天気は *"+weatherJson["forecasts"][0]["telop"]+"* にゃ\n";
message += weatherJson["forecasts"][0]["image"]["url"]+"\n";
if(zeroIfNull(weatherJson["forecasts"][0]["temperature"]["max"]))message += "最高気温:"+weatherJson["forecasts"][0]["temperature"]["max"]["celsius"]+"℃\n";
if(zeroIfNull(weatherJson["forecasts"][0]["temperature"]["min"]))message += "最低気温:"+weatherJson["forecasts"][0]["temperature"]["min"]["celsius"]+"℃\n";
message +="```\n";
message +=weatherJson["description"]["text"]+"\n";
message +="```\n";
PostMessage("general",message);
}
//明日の天気
function YesterdayWeatherMessage()
{
var message;
message = ":sunny: 明日の天気は *"+weatherJson["forecasts"][1]["telop"]+"* にゃ\n";
message += weatherJson["forecasts"][1]["image"]["url"]+"\n";
if(zeroIfNull(weatherJson["forecasts"][1]["temperature"]["max"]))message += "最高気温:"+weatherJson["forecasts"][1]["temperature"]["max"]["celsius"]+"℃\n";
if(zeroIfNull(weatherJson["forecasts"][1]["temperature"]["min"]))message += "最低気温:"+weatherJson["forecasts"][1]["temperature"]["min"]["celsius"]+"℃\n";
PostMessage("general",message);
}
//nullチェックをする関数
function zeroIfNull(a) {
return a === '' ? 0 : a;
}
例として東京の天気を取得しています。
今日の天気と天気アイコン、最低/最高気温、天気概況文を表示するようにしました。
次の日の天気は明日の天気と天気アイコン、最低/最高気温を表示します
#仕上げ
トリガーを設定してお好みの時間にメッセージを送信するようにします。
画像の丸印のボタンを押して、TodayWeatherMessageとYesterdayWeatherMessageのトリガーを追加します。
参考までに、うちのbot子は今日の天気は5:30、明日の天気は19:30に設定しています。