1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GAS】APIキー不要!スプレッドシートのカスタム関数で「過去の天気」を自動取得する

1
Posted at

スクリーンショット 2026-02-17 174446.png

はじめに

「先週のイベントの日の天気、どうだったっけ?」
「日報に天気を記録したいけど、いちいち検索して入力するのは面倒…」

そんな悩みを解決するために、Google Apps Script (GAS) を使って、日付を入れるだけで天気を表示するカスタム関数を作りました。

今回使用する Open-Meteo API は、面倒な会員登録やAPIキーの発行が不要で、すぐに使い始めることができる非常に便利なサービスです。

実装すること

スプレッドシート上で =GET_WEATHER("2024-01-01") と入力すると、その日の東京の天気をアイコン付きで返します。

ソースコード

スプレッドシートのメニューから 「拡張機能」>「Apps Script」 を開き、以下のコードを貼り付けて保存してください。

/**
 * 指定した日付の天気を取得します(東京の例)。
 * @param {string} date_str 日付 (YYYY-MM-DD形式)
 * @return 天気の結果
 * @customfunction
 */
function GET_WEATHER(date_str) {
  if (!date_str) return "日付を入力してください";
  
  // 1. 日付フォーマットの変換 (APIが受け付ける yyyy-mm-dd 形式に整形)
  const date = new Date(date_str);
  const formattedDate = Utilities.formatDate(date, "GMT+9", "yyyy-MM-dd");

  // 2. Open-Meteo API (緯度・経度は東京: 35.6895, 139.6917)
  // 過去データを取得する archive-api を使用
  const url = `https://archive-api.open-meteo.com/v1/archive?latitude=35.6895&longitude=139.6917&start_date=${formattedDate}&end_date=${formattedDate}&daily=weathercode&timezone=Asia%2FTokyo`;

  try {
    // 3. APIリクエストを実行
    const response = UrlFetchApp.fetch(url);
    const data = JSON.parse(response.getContentText());
    
    // daily.weathercode[0] にその日のメインの天気コードが入る
    const weatherCode = data.daily.weathercode[0];

    // 4. 天気コードを日本語の名称に変換
    // WMO Weather interpretation codes (WW) に準拠
    const weatherMap = {
      0: "晴天 ☀️", 1: "概ね晴れ 🌤", 2: "時々曇り ⛅", 3: "曇り ☁️",
      45: "霧 🌫
1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?