GASで天気情報APIを使って天気を取得する

先生

GASで天気予報APIを叩いて、快適なプログラミングライフを送ろう!

GASで天気情報APIを使う準備

Google Apps Script(GAS)で天気情報を取得する方法を解説します。APIを利用することで、簡単に最新の天気情報を取得し、スプレッドシートに記録したり、チャットで通知したりできます。まずは準備として、天気情報を提供するAPIを選び、APIキーを取得しましょう。

今回は、例としてOpenWeatherMap APIを使用します。OpenWeatherMapは無料プランもあり、手軽に試せるためおすすめです。

OpenWeatherMapのウェブサイトでアカウントを作成し、APIキーを取得してください。APIキーは、リクエストを送る際に必要になりますので、大切に保管しておきましょう。

次に、GASのスクリプトエディタを開き、新しいプロジェクトを作成します。スクリプトエディタは、Google Driveから「新規」→「その他」→「Google Apps Script」で開くことができます。

OpenWeatherMap APIを利用して天気情報を取得する

APIキーを取得したら、GASでAPIを呼び出すためのコードを記述します。以下のコードは、OpenWeatherMap APIを使って、東京の現在の天気を取得する例です。

function getWeather() {
  const apiKey = 'YOUR_API_KEY'; // ここに取得したAPIキーを入力
  const city = 'Tokyo';
  const url = https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&lang=ja&units=metric;

  const response = UrlFetchApp.fetch(url);
  const json = JSON.parse(response.getContentText());

  Logger.log(json);
}

上記のコードでは、YOUR_API_KEYの部分を、実際に取得したAPIキーに置き換えてください。city変数には、取得したい都市名を入力します。units=metricと指定することで、摂氏温度で取得できます。lang=jaで日本語の天気情報を取得します。

このコードを実行すると、ログにJSON形式で天気情報が表示されます。JSONデータから、必要な情報(例えば、天気、気温、湿度など)を取り出して、スプレッドシートに書き込んだり、Slackに通知したりできます。

取得した天気情報をスプレッドシートに書き込む

取得した天気情報をスプレッドシートに書き込むには、以下のコードを使用します。

function writeWeatherToSheet() {
  const apiKey = 'YOUR_API_KEY'; // ここに取得したAPIキーを入力
  const city = 'Tokyo';
  const url = https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&lang=ja&units=metric;

  const response = UrlFetchApp.fetch(url);
  const json = JSON.parse(response.getContentText());

  const spreadsheetId = 'YOUR_SPREADSHEET_ID'; // スプレッドシートID
  const sheetName = 'Sheet1'; // シート名

  const ss = SpreadsheetApp.openById(spreadsheetId);
  const sheet = ss.getSheetByName(sheetName);

  // 天気、気温、湿度を書き込む
  const weather = json.weather[0].description;
  const temperature = json.main.temp;
  const humidity = json.main.humidity;

  sheet.appendRow([new Date(), city, weather, temperature, humidity]);
}

上記のコードでは、YOUR_SPREADSHEET_IDの部分を、書き込みたいスプレッドシートのIDに置き換えてください。スプレッドシートIDは、スプレッドシートのURLから確認できます。

このコードを実行すると、スプレッドシートに日時、都市名、天気、気温、湿度が追記されます。

エラー処理について

APIリクエストが失敗した場合に備えて、エラー処理を実装することが重要です。例えば、APIキーが無効な場合や、リクエスト制限を超えた場合など、様々なエラーが発生する可能性があります。

try {
  const response = UrlFetchApp.fetch(url);
  const json = JSON.parse(response.getContentText());
} catch (e) {
  Logger.log('エラーが発生しました: ' + e);
  // エラー処理を行う
}

try-catchブロックを使用することで、エラーが発生した場合に、エラーメッセージをログに出力したり、別の処理を実行したりすることができます。

また、APIからのレスポンスコードを確認し、400番台や500番台のエラーが発生した場合は、適切なエラー処理を行うようにしましょう。

参考リンク

まとめ

GASとOpenWeatherMap APIを使うことで、簡単に天気情報を取得し、様々な用途に活用できます。APIキーの取得、APIの呼び出し、データの加工、スプレッドシートへの書き込みなど、一連の流れを理解することで、より高度なアプリケーションを開発することも可能です。ぜひ、色々なAPIを試して、GASの可能性を広げてみてください。