APIを使って5日分の天気情報をスプレッドシートに入力する

API
この記事は約6分で読めます。
スポンサーリンク

OpenWeatherMapのAPIを利用して天気情報を取得し、Googleスプレッドシートに1週間分の天気情報を自動的に入力するスクリプトの作成方法を説明します。

OpneWeatherMapのAPIキーの取得

OpenWeatherMapのAPIを使用するには、APIキーが必要です。以下の手順に従ってAPIキーを取得してください。

  1. OpenWeatherMapの公式サイトにアクセスします。
  2. 右上の「Sign Up」または「Sign In」からアカウントを作成またはログインします。
  3. アカウント作成/ログイン後、画面右上の自分のアカウントから「My API Keys」をクリックします。
  4. API Keysのタブを表示すると、APIキーが表示されています。
    APIキーをコピーします。

Googleスプレッドシートを作成

Googleスプレッドシートを開く

こちらから新しいGoogleスプレッドシートを作成します。

スクリプトエディタを開く

GoogleスプレッドシートのApps Scriptを開く

スプレッドシートの上部メニューから「拡張機能」>「Apps Script」を選択してエディタを開きます。

スクリプトを書く

以下のスクリプトをスクリプトエディタに貼り付けます。

function myFunction() {
  getWeatherData()
}

function getWeatherData() {
  var apiKey = 'YOUR_API_KEY'; //取得したAPIキーをここに貼り付け
  var city = 'Tokyo,JP'; //取得したい都市を入力
  var apiUrl = 'https://api.openweathermap.org/data/2.5/forecast?q=' + city + '&appid=' + apiKey +'&lang=ja&units=metric' ;

  var response = UrlFetchApp.fetch(apiUrl);
  var weatherData = JSON.parse(response.getContentText());

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clearContents(); // スプレッドシートの内容をクリア

  // ヘッダー行を書き込む
  sheet.getRange(1, 1).setValue('日付');
  sheet.getRange(1, 2).setValue('時刻');
  sheet.getRange(1, 3).setValue('天気');
  sheet.getRange(1, 4).setValue('気温(℃)');
  sheet.getRange(1, 5).setValue('湿度');

  var rowData = [];
  var list = weatherData.list;
  for (var i = 0; i < list.length; i++) {
    var dateTime = new Date(list[i].dt * 1000 + (9 * 1000 ) * 60 * 60); // 9時間を足す
    var date = Utilities.formatDate(dateTime, 'UTC', 'yyyy/MM/dd');
    var time = Utilities.formatDate(dateTime, 'UTC', 'HH:mm:ss');

    var weather = list[i].weather[0].description;

    var temperature = list[i].main.temp;
    var humidity = list[i].main.humidity;

    rowData.push([date, time, weather, temperature, humidity]);


  }

  // データをスプレッドシートに書き込む
  var numRows = rowData.length;
  var numCols = rowData[0].length;
  sheet.getRange(2, 1, numRows, numCols).setValues(rowData);
}

スクリプトの YOUR_API_KEY の部分を、先程取得したOpenWeatherMapのAPIキーに置き換えます。

スクリプトを保存

スクリプト 保存

Apps Scriptで「プロジェクトを保存」をクリックし、入力したスクリプトを保存します。

スクリプトを実行

スクリプト 実行

「実行」ボタンをクリックし、スクリプトを実行します。

承認が必要です と表示されたら

「承認が必要です」と表示された場合、以下の手順で承認します。

1.「権限を確認」をクリックします。

2.自身のアカウントを選択します。

3.「詳細」をクリックし、「プロジェクト名(安全ではないページ)に移動」をクリックします。(プロジェクト名は設定したプロジェクト名に置き換わります。設定していない場合は「無題のプロジェクト」)

4.「許可」をクリックします。

これで実行できるようになります。

実行でエラーになった場合

もし以下のようなエラーメッセージが表示された場合は、APIキーが有効になっていない可能性があります。

Exception: Request failed for http://api.openweathermap.org returned code 401. Truncated server response: {"cod":401, "message": "Invalid API key. Please see https://openweathermap.org/faq#error401 for more info."} (use muteHttpExceptions option to examine full response)

以下を確認しましょう。

  • OpenWeatherMapのサイトでAPI Keysのタブから、設定したAPIキーのstatusが「Active」になっていること
  • スクリプトに入力したAPIキーに誤りがないこと

また、ブラウザからURLを直接入力してもエラーになるか確認してみましょう。

https://api.openweathermap.org/data/2.5/forecast?q=Tokyo,JP&appid={apiKey}&lang=ja&units=metric

{apiKey}の部分をご自身のAPIキーに置き換えてください。

上記を確認してもエラーになる場合は、やはりAPIキーが有効になっていないです。

アカウントを作成してからの時間が短すぎる場合はすぐには有効にならないこともあるので、しばらく時間が経ってから試してみましょう。

どうしても無理ならOpenWeatherMapの問い合わせフォームから問い合わせてみましょう。

まとめ

API Googleスプレッドシート 天気情報 入力

OpenWeatherMapのAPIを使って5日分の天気情報をスプレッドシートに入力するスクリプトが完成しました。

コメントの通知/購読設定
受け取る通知
guest
0 Comments
古い順
新しい順 評価順
Inline Feedbacks
すべてのコメントを見る
タイトルとURLをコピーしました