はじめに
毎朝・退勤時、天気をチェックするのは意外と手間ですよね。
今回は、Google Apps Script(GAS)を使って、無料のお天気APIから予報を取得し、Google Chatのスペースへ自動投稿するスクリプトを解説します。
###実装するコード
/**
* お天気情報を取得し、Google Chatへ通知するメイン関数
*/
function GetWeatherFunction(){
// 1. お天気API(livedoor天気互換API)からデータを取得
const API_Data = JSON.parse(UrlFetchApp.fetch("https://weather.tsukumijima.net/api/forecast/city/130010").getContentText());
// 2. 必要な情報を配列に抽出
let WeatherData = [];
WeatherData[0] = API_Data["forecasts"][0]["date"]; // 予報日
WeatherData[1] = API_Data["forecasts"][0]["telop"]; // 天気
WeatherData[2] = API_Data["description"]["bodyText"]; // 天気概況文
WeatherData[3] = API_Data["forecasts"][1]["temperature"]["max"]["celsius"]; // 明日の最高気温
WeatherData[4] = API_Data["forecasts"][1]["temperature"]["min"]["celsius"]; // 明日の最低気温
// 3. Google ChatのWebhook URL
var url = 'https://chat.googleapis.com/v1/spaces/YOUR_SPACE_ID/messages?key=YOUR_KEY&token=YOUR_TOKEN';
// 4. 送信メッセージの組み立て
var botMessage = {
'text' : WeatherData[0] + "\n港区の天気は" + WeatherData[1] +
"\n最高気温は" + WeatherData[3] + "℃" +
"\n最低気温は" + WeatherData[4] + "℃"
};
// 5. HTTPリクエストのオプション設定
var options = {
'method': 'POST',
'headers' : {
'Content-Type': 'application/json; charset=UTF-8'
},
'payload': JSON.stringify(botMessage)
};
// 6. Google Chatへ送信
var result = UrlFetchApp.fetch(url, options);
Logger.log(result);
}
コードの徹底解説
- 外部APIからのデータ取得
UrlFetchApp.fetch() を使用して、外部のAPIサーバーにリクエストを送信しています。
エンドポイント: https://weather.tsukumijima.net/api/forecast/city/130010
末尾の 130010 は東京(東京都)のIDです。
JSON.parse(): APIから返ってくるテキストデータ(JSON形式)を、JavaScriptで扱えるオブジェクト形式に変換しています。
- 多階層なデータからの抽出
APIから返却されるデータは階層構造になっています。
API_Data["forecasts"][0]:今日の予報データにアクセス。
["temperature"]["max"]["celsius"]:深い階層にある「最高気温(摂氏)」をピンポイントで取得しています。
- Google Chat Webhookによる通知
取得した情報を botMessage というオブジェクトにまとめ、Google ChatのWebhook URLに対して POSTメソッド で送信します。
JSON.stringify(botMessage):JavaScriptのオブジェクトを、送信可能なJSON文字列に変換しています。
設定のポイント
Webhook URLの取得: Google Chatのスペース設定から「アプリと統合」>「Webhook」を作成し、URLを取得してください。
トリガーの設定: GASのエディタ左側にある「時計アイコン」からトリガーを追加し、GetWeatherFunction を「毎日 7時〜8時」などに設定すれば、完全自動のモーニングルーティンが完成します!
注意点
コード内のWebhook URLには「APIキー」と「トークン」が含まれています。QiitaやGitHubに公開する際は、必ず自身のURLを伏せ字にするか、プロパティサービス(PropertiesService)を利用して隠すようにしましょう。
APIの仕様変更により、データの階層が変わるとエラーになる可能性があるため、定期的なメンテナンスが推奨されます。
まとめ
GASを使えば、わずか数十行のコードで「情報の収集」から「通知」までを自動化できます。
今回はお天気でしたが、これを応用して「ニュース」や「株価」の通知botを作ることも可能です。
ぜひ、日々の業務効率化に役立ててみてください!
