【GAS】Google Apps Scriptで天気予報APIを自動取得してGoogleスプレッドシートに記録する方法

はじめに

日常業務の中で「今日の天気」や「週間予報」を手動で調べて記録している方は意外と多いのではないでしょうか。
Google Apps Script(GAS)を使えば、外部の天気予報APIからデータを取得し、Googleスプレッドシートに自動で保存することが可能です。

本記事では、無料の天気予報APIを利用して、GASによる自動化の仕組みを実装する方法を解説します。
日次レポートやチーム内共有の基盤として活用でき、汎用性の高いスクリプトになります。

天気予報APIの準備と仕様確認

まずは外部APIを用意します。例として「OpenWeatherMap API」を利用します。無料プランでも十分利用可能で、APIキーを取得すればすぐに呼び出せます。

エンドポイント例:

https://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=YOUR_API_KEY&units=metric&lang=ja

ここで q パラメータは都市名、appid は取得したAPIキー、units=metric で摂氏指定、lang=ja で日本語の結果を得られます。

GASでAPIを呼び出す基本コード

次に、Google Apps ScriptでAPIを呼び出すコードを作成します。

function getWeather() {
  var apiKey = "YOUR_API_KEY";
  var city = "Tokyo";
  var url = "https://api.openweathermap.org/data/2.5/weather?q=" 
            + city + "&appid=" + apiKey + "&units=metric&lang=ja";
  
  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());
  
  Logger.log(data);
}

このコードを実行すると、東京の天気情報がJSON形式で取得できます。

取得データをスプレッドシートに記録する

次に、取得したデータをスプレッドシートに書き込みます。

function saveWeather() {
  var apiKey = "YOUR_API_KEY";
  var city = "Tokyo";
  var url = "https://api.openweathermap.org/data/2.5/weather?q=" 
            + city + "&appid=" + apiKey + "&units=metric&lang=ja";
  
  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("天気ログ");
  var now = new Date();
  
  var row = [
    now,
    data.name,
    data.weather[0].description,
    data.main.temp,
    data.main.humidity
  ];
  
  sheet.appendRow(row);
}

これにより、日時・都市・天気概要・気温・湿度がシートに追記されていきます。

トリガーを使って自動化する

最後に、GASのトリガー機能を使って「毎朝9時に実行」などの自動化を設定します。

  1. スクリプトエディタで「時計アイコン」をクリック
  2. saveWeather関数を選択
  3. 実行タイミングを「時間主導型」→「日付ベース」→「午前9時」に設定

これで毎日自動的にシートに天気情報が追加されます。

おわりに

本記事では、Google Apps Scriptを使って外部API(天気予報)からデータを取得し、スプレッドシートに自動記録する方法を紹介しました。
この仕組みは天気以外にも、株価・為替・交通情報など様々なデータ収集に応用できます。

業務効率化やデータ管理の自動化に興味のある方は、ぜひご自身のプロジェクトに取り入れてみてください。

また、APIの仕様変更やうまく動作しないなどがありましたら、遠慮なくコメントまでお寄せください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です