MENU
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
n8n × Claude 自動化の実践記録 | 自動化ラボ
自動化ラボ
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
自動化ラボ
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
  1. ホーム
  2. ワークフローの作り方
  3. n8nで天気予報(Open-Meteo)をGoogleスプレッドシートに毎日記録するワークフロー

n8nで天気予報(Open-Meteo)をGoogleスプレッドシートに毎日記録するワークフロー

2026 10/07
ワークフローの作り方
Google スプレッドシート 天気 API
2026年10月1日2026年10月7日
当ページのリンクには広告が含まれています。
ワークフロー全体(Webhook → Get Weather → Format Row → Google Sheets → Respond to Webhook)
  • 動作確認日:2026-10-01
  • n8nのバージョン:2.41.3(Docker、セルフホスト)
目次

① 結論:このワークフローでできること

天気予報のAPI(Open-Meteo)から東京の今日の予報を取り、「日付・最高気温・最低気温・降水確率」をGoogleスプレッドシートに1日1行で記録します。

  • Open-MeteoはAPIキーなしで使えます。登録は不要です。
  • 同じ日に何回実行しても、その日の行が上書きされるだけで、行は増えません。
  • 使う認証情報(Credentials)は、Google Sheetsの1つだけです。
  • 動作確認のため、起動にはWebhookを使っています。実際に使うときは、Schedule Triggerで毎朝実行する想定です。

② 完成イメージ

ワークフロー全体(Webhook → Get Weather → Format Row → Google Sheets → Respond to Webhook)

WebhookのURLにGETでアクセスすると、シートに記録したうえで、次の文章が返ってきます(実際の出力です)。

Webhookを呼んだときに返ってきた文章
2026-10-01 東京:最高 26.7℃ / 最低 18.5℃ / 降水確率 6%(シートに記録しました)

同じ日に2回実行したあと、シートは1行のままでした。

datecitymaxTempminTemprainChancerecordedAt
2026-10-01東京26.718.562026-10-01 1:35

実行したときの件数の流れは、次のとおりです。

ノード出てきた件数
Webhook1
Get Weather(HTTP Request)1
Format Row1
Google Sheets1
Respond to Webhook1

動かしてみて気づいた点が2つあります。

  • 気温と降水確率は、Format Rowで「Number」にしたので、シートでも数値として入りました。そのままグラフや平均の計算に使えます。
  • recordedAt は 2026-10-01 01:35 という文字で送りましたが、シートでは日時として扱われ、2026-10-01 1:35 と表示されました。

③ 使うノードと必要なもの

必要なもの

  • n8n(今回はバージョン2.41.3をDockerで動かしました)
  • 記録先のGoogleスプレッドシートと、タブ(今回は weather-log という名前のタブ。中身は空で大丈夫です)
  • 認証情報:Google Sheets OAuth2 API(Google Cloudで作ったOAuthクライアントを使います)
  • Open-Meteoの登録やAPIキー:不要

Open-Meteoは、商用でない使い方なら無料です。商用で使う場合は、Open-Meteoの利用条件を確認してください。

使うノード

ノード役割設定したこと
Webhook動作確認用の起動ボタンPath:test-weather-sheets、Respond:Using 'Respond to Webhook' Node
HTTP Request(Get Weather)Open-Meteoから予報を取るMethod:GET、URL:下のURL、Authentication:None
Edit Fields(Format Row)シートに書く6つの項目を作る下の画像と表のとおり
Google Sheetsその日の行を追記、または上書きするOperation:Append or Update Row、Sheet:By Name weather-log、Column to match on:date
Respond to Webhook記録した予報を文章で返すRespond With:Text
Get Weather(HTTP Requestノード)の設定画面

Get Weatherでは、次のURLを呼んでいます。

https://api.open-meteo.com/v1/forecast?latitude=35.6895&longitude=139.6917&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_max&timezone=Asia%2FTokyo&forecast_days=1
パラメータ意味
latitude / longitude場所(今回は東京)
daily取りたい項目(最高気温・最低気温・降水確率の最大値)
timezone=Asia/Tokyo日付の区切りを日本時間にする
forecast_days=1今日の分だけ取る
Format Row(Edit Fieldsノード)の設定画面

Format Rowでは、APIの結果から次の6つの項目を作っています。APIは項目ごとに配列([...])で返すので、今日の分として [0] を取り出しています。

項目名型値
dateString{{ $json.daily.time[0] }}
cityString東京
maxTempNumber{{ $json.daily.temperature_2m_max[0] }}
minTempNumber{{ $json.daily.temperature_2m_min[0] }}
rainChanceNumber{{ $json.daily.precipitation_probability_max[0] }}
recordedAtString{{ $now.setZone('Asia/Tokyo').toFormat('yyyy-MM-dd HH:mm') }}

Google Sheetsノードでは、照合する列(Column to match on)を date にしました。そのため、同じ日付の行があれば上書きし、なければ追記します。

④ JSON

n8nの公開API(POST /api/v1/workflows)でこのJSONからワークフローを作成し、有効化してから、上の結果を確認しました。

使うときは、次の2か所を自分の環境に合わせて書き換えてください。

  • YOUR_SPREADSHEET_ID:記録先のスプレッドシートのID(URLの /d/ と /edit の間の文字列)
  • YOUR_CREDENTIAL_ID:n8nに登録したGoogle Sheetsの認証情報のID。読み込んだあとに、ノードの画面で認証情報を選び直しても大丈夫です。
{
  "name": "test-weather-sheets",
  "nodes": [
    { "parameters": { "path": "test-weather-sheets", "responseMode": "responseNode", "options": {} },
      "id": "b7000000-0001-4000-8000-000000000001", "name": "Webhook", "type": "n8n-nodes-base.webhook", "typeVersion": 2, "position": [0, 0], "webhookId": "b7000000-aaaa-4000-8000-000000000001" },
    { "parameters": { "url": "https://api.open-meteo.com/v1/forecast?latitude=35.6895&longitude=139.6917&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_max&timezone=Asia%2FTokyo&forecast_days=1", "options": {} },
      "id": "b7000000-0002-4000-8000-000000000002", "name": "Get Weather", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [220, 0] },
    { "parameters": {
        "assignments": { "assignments": [
          { "id": "w1", "name": "date", "value": "={{ $json.daily.time[0] }}", "type": "string" },
          { "id": "w2", "name": "city", "value": "東京", "type": "string" },
          { "id": "w3", "name": "maxTemp", "value": "={{ $json.daily.temperature_2m_max[0] }}", "type": "number" },
          { "id": "w4", "name": "minTemp", "value": "={{ $json.daily.temperature_2m_min[0] }}", "type": "number" },
          { "id": "w5", "name": "rainChance", "value": "={{ $json.daily.precipitation_probability_max[0] }}", "type": "number" },
          { "id": "w6", "name": "recordedAt", "value": "={{ $now.setZone('Asia/Tokyo').toFormat('yyyy-MM-dd HH:mm') }}", "type": "string" }
        ] },
        "options": {} },
      "id": "b7000000-0003-4000-8000-000000000003", "name": "Format Row", "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [440, 0] },
    { "parameters": {
        "operation": "appendOrUpdate",
        "documentId": { "__rl": true, "value": "YOUR_SPREADSHEET_ID", "mode": "id" },
        "sheetName": { "__rl": true, "value": "weather-log", "mode": "name" },
        "columns": { "mappingMode": "autoMapInputData", "value": {}, "matchingColumns": ["date"], "schema": [] },
        "options": {} },
      "id": "b7000000-0004-4000-8000-000000000004", "name": "Google Sheets", "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.5, "position": [660, 0],
      "credentials": { "googleSheetsOAuth2Api": { "id": "YOUR_CREDENTIAL_ID", "name": "Google Sheets account" } } },
    { "parameters": { "respondWith": "text", "responseBody": "={{ $('Format Row').item.json.date }} {{ $('Format Row').item.json.city }}:最高 {{ $('Format Row').item.json.maxTemp }}℃ / 最低 {{ $('Format Row').item.json.minTemp }}℃ / 降水確率 {{ $('Format Row').item.json.rainChance }}%(シートに記録しました)", "options": {} },
      "id": "b7000000-0005-4000-8000-000000000005", "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "typeVersion": 1.1, "position": [880, 0] }
  ],
  "connections": {
    "Webhook": { "main": [[{ "node": "Get Weather", "type": "main", "index": 0 }]] },
    "Get Weather": { "main": [[{ "node": "Format Row", "type": "main", "index": 0 }]] },
    "Format Row": { "main": [[{ "node": "Google Sheets", "type": "main", "index": 0 }]] },
    "Google Sheets": { "main": [[{ "node": "Respond to Webhook", "type": "main", "index": 0 }]] }
  },
  "settings": { "executionOrder": "v1" }
}

⑤ つまずきポイントと対処

このワークフロー自体は、1回目の実行でエラーなく動きました。

気をつける点として、Open-Meteoの daily の値は、項目ごとの配列で返ってきます。$json.daily.temperature_2m_max のままだと [26.7] のような配列になるので、[0] を付けて1つ目の値を取り出しています。

⑥ 応用アイデア

どれも、まだ試していないアイデアです。

  • Webhookを「Schedule Trigger」に替えて、毎朝7時に記録する
  • latitude と longitude を変えて、複数の都市を別々の行に記録する(照合する列を date と city の組み合わせにする)
  • 降水確率が50%以上の日だけ、SlackやDiscordに通知する
  • 1か月分たまったら、シートのグラフ機能で気温の変化を見る
ワークフローの作り方
Google スプレッドシート 天気 API
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • n8nのWebhookで受け取ったデータをGoogleスプレッドシートに追記するワークフロー
  • n8nでGoogleスプレッドシートの一覧からGmailの下書きを作るワークフロー

この記事を書いた人

自動化ラボ管理人のアバター 自動化ラボ管理人

コードは書けないけれど、n8n と Claude(Claude Code)で仕事とブログを自動化しています。実際に動かしたワークフローを、動作確認日・JSON・つまずいたところまで記録しています。

関連記事

  • n8nのGoogle連携まとめ:Sheets・Gmail・Calendar・Driveを、1つのOAuthクライアントで使う
    2026年10月3日
  • n8nのRespond to Webhookが返事をしない(本文が空になる)ときの対処
    2026年10月3日
  • n8nでTelegramのメッセージが消える・2回記録されるとき(getUpdatesのoffset)の対処
    2026年10月3日
  • n8nでGoogleにログインすると「エラー 401: invalid_client」になるときの対処
    2026年10月3日
  • n8nのGoogle Sheetsで「Unable to sign without access token」になるときの対処
    2026年10月3日
  • ワークフロー全体(Webhook → Get Offset → Get Updates → Pick Memos → Has Memo → Google Sheets → Save Offset)
    n8nでTelegramのボットに送ったメモをGoogleスプレッドシートに記録するワークフロー(公開URLなし)
    2026年10月1日
  • ワークフロー全体(Webhook → Get Weather → Make Message → LINE Broadcast → Respond to Webhook)
    n8nで今日の天気予報をLINEに通知するワークフロー(APIキー不要・Messaging API)
    2026年10月1日
  • ワークフロー全体(Webhook → Get Weather → Make Message → Discord → Respond to Webhook)
    n8nで今日の天気予報をDiscordに通知するワークフロー(APIキー不要)
    2026年10月1日

記事の種類

  • Claude 活用
  • n8n リリース情報
  • はじめての n8n
  • エラー・つまずき対処
  • サーバー・WordPress
  • テンプレート配布
  • ワークフローの作り方
  • 運営記録
つなぐサービス
Google スプレッドシートRSSLINESlackGmailDiscordTelegramWebhookn8n API天気 APIGoogle カレンダーGoogle ドライブ
目次
  • プロフィール
  • お問い合わせ
  • プライバシーポリシー

© 自動化ラボ.

目次