generated at
天気予報の自動貼り付け機能
天気予報API
spreadsheetシステム手帳の機能、毎日の天気予報を自動記入を行う
OpenWetherMAPを使う


>参考
「出かけようとしたら雨が降ってた……」を防ぐため、「1時間毎の天気予報」を1時間毎にSlack通知してみた | Developers.IO

GASを使って天気予報botを作ってみよう! - Qiita

気象情報APIの OpenWeatherMap で「現在・1時間毎・1日毎」の天気予報を取得してみた | Developers.IO

OpenWeatherMapで郵便番号が使えないときのアプローチ - Shoのシステム開発忘備録

Google Apps Script - jsonの抜き出し方について、google apps script|teratail

鯖江の経度と緯度を確認

APIを呼び出すURL
鯖江の位置

金沢の位置 36.59444,136.62556

こちらを参照
One Call API: weather data for any geographical coordinate - OpenWeatherMap



完成

2024/10/17
従来のAPIがサービス停止したため、One Call API3.0に変更
参考ページ
上記ページを参考に、支払い方法を登録した後、新たにAPIキーを作って使用すると上手く動作した。

aaa.js
//200926_ function startTodayActive() シート起動時に本日の日付をアクティブする関数を追加 function updateTodayScheduleToText(){ //各月の予定シート関係の定数 var dateRow = 1;//各月の予定シートの日付の記載されている行、1行目に記載されているはず var dateColumn = 9;//各月の予定シートの日付の記載されている列、9列目(I列)に記載されているはず var scheduleRow = 2;//各月の予定シートの日毎の予定の記載されている行、2行目に記載されているはず //各月の予定シート関係の定数(天気予報関連) var weatherRow = 27;//天気予報の行 var maxTempRow = 28; //最高気温の行 var minTempRow = 29; //最低気温の行 var now = new Date();//現在時刻、日付の取得 var now_yyMM =Utilities.formatDate(now, "JST", "yyMM");//現在時刻を年月の書式に変更 Logger.log(now);//確認用 Logger.log(now_yyMM); var thisMonthSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(now_yyMM);//伊勢Todoの今月シートを取得 var firstDayOfThisMonth = thisMonthSheet.getRange(dateRow,dateColumn);//1行9列目が当月一日の日付が入力されたセル、シートの書式を変更した場合は修正が必要 var dateFirstDay = firstDayOfThisMonth.getValue(); Logger.log(dateFirstDay); if(now_yyMM == Utilities.formatDate(dateFirstDay, "JST", "yyMM") ){//念のため、yyMMタブの月初めのセルの内容を確認、当月一日なら実行 Logger.log('今月であることを確認しました'); var column_today = Utilities.formatDate(now, "JST", "dd")-1; Logger.log(column_today); var todayOfThisMonth = thisMonthSheet.getRange(scheduleRow,dateColumn+column_today);//当日予定セルの範囲取得 var dateThisDay = todayOfThisMonth.getValue();//当日予定セルの値の取得 Logger.log('セル内容"'+dateThisDay+'"'); todayOfThisMonth.copyTo(todayOfThisMonth,{contentsOnly:true});//値の貼付け //以下天気予報情報取得+貼り付け var json=fetchWeatherData(); //(当日分) var strWeather = json["daily"][0]["weather"][0]["description"];//天気の内容取得 thisMonthSheet.getRange(weatherRow,dateColumn+column_today).setValue(strWeather);//天気の内容貼り付け var strMaxTemp = json["daily"][0]["temp"]["max"]; thisMonthSheet.getRange(maxTempRow,dateColumn+column_today).setValue(strMaxTemp);//最高気温の貼り付け var strMinTemp = json["daily"][0]["temp"]["min"]; thisMonthSheet.getRange(minTempRow,dateColumn+column_today).setValue(strMinTemp);//最低気温の貼り付け //(翌日分) var strWeather = json["daily"][1]["weather"][0]["description"];//天気の内容取得 thisMonthSheet.getRange(weatherRow,dateColumn+column_today+1).setValue(strWeather);//天気の内容貼り付け var strMaxTemp = json["daily"][1]["temp"]["max"]; thisMonthSheet.getRange(maxTempRow,dateColumn+column_today+1).setValue(strMaxTemp);//最高気温の貼り付け var strMinTemp = json["daily"][1]["temp"]["min"]; thisMonthSheet.getRange(minTempRow,dateColumn+column_today+1).setValue(strMinTemp);//最低気温の貼り付け //天気予報情報取得+貼り付け終わり } } function fetchWeatherData() { // API Callをして天気予報情報を取得 const apiKey = '自分のAPIキー'; // OpenWeatherMap APIkey const lat = 36.59444; //金沢の緯度、経度 const lon = 136.62556; //金沢の緯度、経度 const lang = 'ja' // 言語指定 const apiUrl = `https://api.openweathermap.org/data/3.0/onecall?lat=${lat}&lon=${lon}&lang=${lang}&appid=${apiKey}&units=metric&exclude=current,hourly,minutely`; const response = UrlFetchApp.fetch(apiUrl); const data = JSON.parse(response.getContentText()); return data; } function startTodayActive(){ //各月の予定シート関係の定数 var dateRow = 1;//各月の予定シートの日付の記載されている行、1行目に記載されているはず var dateColumn = 9;//各月の予定シートの日付の記載されている列、9列目(I列)に記載されているはず var scheduleRow = 2;//各月の予定シートの日毎の予定の記載されている行、2行目に記載されているはず var now = new Date();//現在時刻、日付の取得 var now_yyMM =Utilities.formatDate(now, "JST", "yyMM");//現在時刻を年月の書式に変更 Logger.log(now);//確認用 Logger.log(now_yyMM); var thisMonthSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(now_yyMM);//伊勢Todoの今月シートを取得 var firstDayOfThisMonth = thisMonthSheet.getRange(dateRow,dateColumn);//1行9列目が当月一日の日付が入力されたセル、シートの書式を変更した場合は修正が必要 var dateFirstDay = firstDayOfThisMonth.getValue(); Logger.log(dateFirstDay); if(now_yyMM == Utilities.formatDate(dateFirstDay, "JST", "yyMM") ){//念のため、yyMMタブの月初めのセルの内容を確認、当月一日なら実行 Logger.log('今月であることを確認しました'); var column_today = Utilities.formatDate(now, "JST", "dd")-1; Logger.log(column_today); var todayOfThisMonth = thisMonthSheet.getRange(scheduleRow,dateColumn+column_today);//当日予定セルの範囲取得 thisMonthSheet.setActiveSelection(todayOfThisMonth); } }



>2024/11/04