0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

退勤間際にGoogleChatで現在の外の天気をハングアウトチャットで通知する

0
Last updated at Posted at 2026-03-24

スクリーンショット 2026-03-24 123159.png

はじめに

毎朝・退勤時、天気をチェックするのは意外と手間ですよね。
今回は、Google Apps Script(GAS)を使って、無料のお天気APIから予報を取得し、Google Chatのスペースへ自動投稿するスクリプトを解説します。

###実装するコード

weather.js
/**
 * お天気情報を取得し、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);
}

コードの徹底解説

  1. 外部APIからのデータ取得
    UrlFetchApp.fetch() を使用して、外部のAPIサーバーにリクエストを送信しています。

エンドポイント: https://weather.tsukumijima.net/api/forecast/city/130010

末尾の 130010 は東京(東京都)のIDです。

JSON.parse(): APIから返ってくるテキストデータ(JSON形式)を、JavaScriptで扱えるオブジェクト形式に変換しています。

  1. 多階層なデータからの抽出
    APIから返却されるデータは階層構造になっています。

API_Data["forecasts"][0]:今日の予報データにアクセス。

["temperature"]["max"]["celsius"]:深い階層にある「最高気温(摂氏)」をピンポイントで取得しています。

  1. 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を作ることも可能です。
ぜひ、日々の業務効率化に役立ててみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?