WBSを作ったり、カレンダーを作ったりする際に地味に面倒なのが祝日考慮です。
曜日については土日を休み判定すれば機械的にスケジュールが作れますが、
祝日は自分で調べて手入力だとイケてない。
GoogleAppsScriptでは日本の祝日カレンダーから取得できます。
コピペで使える祝日取得処理
スプレッドシート側の準備
C2に取得開始日、E2に取得終了日を入力して、GASをじっこうすると、祝日一覧が取得できます。
// スプレッドシートにメニューを追加する function onOpen() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var entries = [{ name : "祝日取得", functionName : "getJpHolyiday" }]; sheet.addMenu("GoogleAppsScript", entries); }; function getJpHolyiday() { //日本の祝日カレンダーを取得 //アメリカ //ja.usa#holiday@group.v.calendar.google.com //中国 //ja.china#holiday@group.v.calendar.google.com //台湾 //ja.taiwan#holiday@group.v.calendar.google.com var JP_HOLIDAY_CALENDAR = 'ja.japanese#holiday@group.v.calendar.google.com' // シート名 var SHEET_NAME = 'schedule'; //開始位置 var RANGE = 5; // フォーマット var FORMAT = 'yyyy/mm/dd'; // シート情報を取得 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME); sheet.getRange(5, 2, 300, 2).clearContent(); sheet.getRange(5, 8, 300, 2).clearContent(); // カレンダー情報を取得 var jp_calender = CalendarApp.getCalendarById(JP_HOLIDAY_CALENDAR); // 当日の予定を取得 var startDate = new Date(sheet.getRange("C2").getValues()); var endDate = new Date(sheet.getRange("E2").getValues()); var jp_schedules = jp_calender.getEvents(startDate, endDate); var tmpDate = startDate; var cnt = 0; // 祝日を繰り返し出力する for(var index = 0; index < jp_schedules.length; index++) { var range = RANGE + index; // 日付を出力 sheet.getRange(range, 2).setValue(jp_schedules[index].getStartTime()).setNumberFormat(FORMAT); // 予定名を出力 sheet.getRange(range, 3).setValue(jp_schedules[index].getTitle()); } }