Googleスプレッドシートに関する質問です。 GASを使用して、「祝日一覧」シートの自動更新を設定しております。 現在、使用しているスクリプトは、 /** * 祝日一覧表のシートに毎年祝日を追記する。 * 手動でも実行可能。 * 毎年自動実行にするなら、時間主導のトリガーで毎月1日の早朝の時間帯に実行するように設定する。 * 年が変わると既存の日付の次の行から祝日を追記するので、IMPORTRANGEの対象範囲はシート名!B4:Eなどのように行末を指定しない。 * @customfunction */ function getHolidays() { // 初期設定 const sheetName = ('祝日一覧'); const dateFirstRow = 4; // データの記入開始行 const dateColumn = 2; //祝日の記入開始列 const days = ['日', '月', '火', '水', '木', '金', '土']; // 曜日の漢字表記 // Googleの日本の祝日カレンダーから祝日を取得 const today = new Date(); // 実行した日時 // const today = new Date('2023/1/10'); // 動作確認用 // const today = new Date('2025/1/20'); // 動作確認用 today.setHours(0, 0, 0, 0); // 時刻をクリア const startTime = new Date(today); startTime.setMonth(0); // 1月に設定 startTime.setDate(1); // 1日に設定 const thisYear = startTime.getFullYear() const endTime = new Date(startTime); endTime.setFullYear(thisYear + 1); // 1年後に設定 const calendar = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com'); const events = calendar.getEvents(startTime, endTime); // 取得した祝日の予定から[日付, 曜日, 祝日名]の配列に格納 const holidays = events.map(v => [v.getStartTime(), days[v.getStartTime().getDay()], v.getTitle()]); // 取得した祝日をシートに追記 if (holidays.length > 0) { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName(sheetName); // 日付の列に取得済みの年を確認してから追記 const dateLastRow = sheet.getRange(sheet.getMaxRows(), dateColumn).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); const dates = sheet.getRange(dateFirstRow, dateColumn, dateLastRow - dateFirstRow + 1, 1).getValues(); const retrievedYears = new Set(dates.map(v => new Date(v).getFullYear())); if (retrievedYears.has(thisYear)) { console.log(`${thisYear}年の祝日は既に記入してあります。`); } else { // 日付の列の最終行の次の行に追記 sheet.getRange(dateLastRow + 1, dateColumn, holidays.length, holidays[0].length).setValues(holidays); } } } ですが、2025年の祝日がうまく抽出できません… どのようにすれば良いのでしょうか?
Google ドライブ