初心者でもわかるGoogle Apps Script活用のススメ

【GAS】CalendarAppのRecurrenceRuleクラスのメソッドを解説

RecurrenceRuleクラスのメソッド

EventRecurrenceクラスのメソッドと同じように、本ページでは繰り返し予定の作り方をご紹介します。公式リファレンスではサンプルコードがないものがあったりしますが、本ページでは全てのメソッドにコピペして使えるサンプルコードをつけてあります。サンプルコードの内容を一部変えたりして動作の確認等に活用して下さい。

それでは、説明を始めます。

  1. addDailyExclusion() — 連続する複数日を繰り返しルールから除外するメソッド
  2. addDailyRule() — 連続する複数日を繰り返しルールに指定するメソッド
  3. addDate(date) — 特定の日を繰り返しルールに指定するメソッド
  4. addDateExclusion(date) — 特定の日を繰り返しルールから除外するメソッド
  5. addMonthlyExclusion() — 連続する複数月を繰り返しルールから除外するメソッド
  6. addMonthlyRule() — 連続する複数月を繰り返しルールに指定するメソッド
  7. addWeeklyExclusion() — 連続する複数週を繰り返しルールから除外するメソッド
  8. addWeeklyRule() — 連続する複数週を繰り返しルールに指定するメソッド
  9. addYearlyExclusion() — 連続する複数年を繰り返しルールから除外するメソッド
  10. addYearlyRule() — 連続する複数年を繰り返しルールに指定するメソッド
  11. interval(interval) — 繰り返し予定が発生する間隔をルールに指定するメソッド
  12. onlyInMonth(month) — 繰り返し予定が発生する単独月を指定するメソッド
  13. onlyInMonths(months) — 繰り返し予定が発生する複数月を指定するメソッド
  14. onlyOnMonthDay(day) — 月ベースで繰り返し予定が発生する単独曜日を指定するメソッド
  15. onlyOnMonthDays(days) — 月ベースで繰り返し予定が発生するを複数曜日を指定するメソッド
  16. onlyOnWeek(week) — 年ベースで繰り返し予定が発生する単独週を指定するメソッド
  17. onlyOnWeekday(day) — 週ベースで繰り返し予定が発生する単独曜日を指定するメソッド
  18. onlyOnWeekdays(days) — 週ベースで繰り返し予定が発生する複数曜日を指定するメソッド
  19. onlyOnWeeks(weeks) — 年ベースで繰り返し予定が発生する複数週を指定するメソッド
  20. onlyOnYearDay(day) — 年ベースで繰り返し予定が発生する単独曜日を指定するメソッド
  21. onlyOnYearDays(days) — 年ベースで繰り返し予定が発生する複数曜日を指定するメソッド
  22. setTimeZone(timeZone) — 繰り返し予定のタイムゾーンを指定するメソッド
  23. times(times) — 繰り返し回数を指定するメソッド
  24. until(endDate) — 繰り返し予定の終了日を指定するメソッド
  25. weekStartsOn(day) — 1週間が始まる曜日を指定するメソッド

※times(times)とinteravl(interval)は直前のルールに対してのみ適用されます。

addDailyExclusion()/addDailyRule()/times(times)

サンプルコード1
//addDailyExclusionとaddDailyRuleのサンプルコード
function sampleCode1() {
  var today = new Date();
  var times = 30;
  var endDate = new Date(Date.parse(today) + (60 * 60 * 24 * 1000 * 60));
  var recurrence = CalendarApp.newRecurrence()
                              .addDailyRule()
                              .until(endDate)
                              .addDailyExclusion()
                              .times(times);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', today, recurrence);
}

『 変数の説明 』

today = プログラムを実行した日付オブジェクトを代入
times = 30回を代入
endDate = 実行日の60日後の日付オブジェクトを代入
recurrence = 実行日から30日間を除き、endDateの日付まで実行日から起算して60日後まで毎日繰り返される終日予定のルールを代入

addDate(date)

サンプルコード2
//addDateのサンプルコード
function sampleCode2() {
  var date = new Date();
  var targetDate = new Date(Date.parse(date) + (60 * 60 * 24 * 1000 * 5));
  var recurrence = CalendarApp.newRecurrence()
                              .addDate(targetDate);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
targetDate = 実行日の5日後の日付オブジェクトを代入
recurrence = 実行日から5日後に繰り返される終日予定のルールを代入

addDateExclusion(date)

サンプルコード3
//addDailyExclusionのサンプルコード
function sampleCode3() {
  var date = new Date();
  var targetDate = new Date(Date.parse(date) + (60 * 60 * 24 * 1000 * 3));
  var recurrence = CalendarApp.newRecurrence()
                              .addDailyRule()
                              .times(5)
                              .addDateExclusion(targetDate);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
targetDate = 実行日の3日後の日付オブジェクトを代入
recurrence = 実行日から5日間に毎日繰り返される終日予定にtargetDateに指定した日付を除外した繰り返しルールを代入

addMonthlyExclusion()/addMonthlyRule()

サンプルコード4
//addMonthlyExclusionとaddMonthlyRuleのサンプルコード
function sampleCode4() {
  var date = new Date();
  var recurrence = CalendarApp.newRecurrence()
                              .addMonthlyRule()
                              .times(5)
                              .addMonthlyExclusion()
                              .times(2);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
recurrence = 実行日から5ヶ月間に毎月繰り返される終日予定から最初の2ヶ月間を除外した繰り返しルールを代入

addWeeklyExclusion()/addWeeklyRule()

サンプルコード5
//addMonthlyExclusionとaddMonthlyRuleのサンプルコード
function sampleCode5() {
  var date = new Date();
  var recurrence = CalendarApp.newRecurrence()
                              .addWeeklyRule()
                              .times(5)
                              .addWeeklyExclusion()
                              .times(2);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
recurrence = 実行日から5週間に毎週繰り返される終日予定から最初の2週間を除外した繰り返しルールを代入

addYearlyExclusion()/addYearlyRule()

サンプルコード6
//addYearlyExclusionとaddYearlyRuleのサンプルコード
function sampleCode6() {
  var date = new Date();
  var recurrence = CalendarApp.newRecurrence()
                              .addYearlyRule()
                              .times(5)
                              .addYearlyExclusion()
                              .times(2);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
recurrence = 実行日から5年間に毎年繰り返される終日予定から最初の2年間を除外した繰り返しルールを代入

interval(interval)

サンプルコード7
//intervalのサンプルコード
function sampleCode7() {
  var date = new Date();
  var interval = 2;
  var recurrence = CalendarApp.newRecurrence
                              .addDailyRule()
                              .times(3)
                              .interval(interval)
                              .addWeeklyExclusion()
                              .times(2);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
interval = 繰り返しの間隔を指定を代入
※addDailyRuleと一緒に使えば2日に1回、addWeeklyRuleと一緒に使えば2週間に1回と言うような形で直前に使用する繰り返しルールによって挙動が変わります。
recurrence = 実行日から2日間を除き、2日ごとに3回繰り返すルールを代入(2日後と4日後に予定を作成)

intervalとtimesは直前のルールにのみ適用されます。

onlyInMonth(month)

サンプルコード8
//onlyInMonthのサンプルコード
function sampleCode8() {
  var date = new Date();
  var month = CalendarApp.Month.JANUARY;
  var recurrence = CalendarApp.newRecurrence()
                              .addDailyRule()
                              .onlyInMonth(month);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
month = 1月の月オブジェクトを代入
recurrence = 1月中に毎日繰り返すルールを代入

onlyInMonths(months)

サンプルコード9
//onlyInMonthsのサンプルコード
function sampleCode9() {
  var date = new Date();
  var months = [CalendarApp.Month.JANUARY, CalendarApp.Month.FEBRUARY]; //月オブジェクトを配列に入れる
  var recurrence = CalendarApp.newRecurrence()
                              .addDailyRule()
                              .onlyInMonths(months);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
months = 1月と2月の月オブジェクトを代入
recurrence = 1月中と2月中に毎日繰り返すルールを代入

onlyOnMonthDay(day)

サンプルコード10
//onlyOnMonthDayのサンプルコード
function sampleCode10() {
  var date = new Date();
  var day = 5;
  var recurrence = CalendarApp.newRecurrence()
                              .addMonthlyRule()
                              .onlyOnMonthDay(day);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
day = 5を代入
recurrence = 毎月5日に繰り返すルールを代入

onlyOnMonthDays(days)

サンプルコード11
//onlyOnMonthDaysのサンプルコード
function sampleCode11() {
  var date = new Date();
  var days = [5, 10]; //配列に入れる
  var recurrence = CalendarApp.newRecurrence()
                              .addMonthlyRule()
                              .onlyOnMonthDays(days);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
days = 5と10を配列で代入
recurrence = 毎月5日と10日に繰り返すルールを代入

onlyOnWeek(week)

※こちらのメソッドは現状うまく動作しません(2019年1月15日現在)

サンプルコード12
//onlyOnWeekのサンプルコード
function sampleCode12() {
  var date = new Date();
  var week = 3;
  var recurrence = CalendarApp.newRecurrence()
                              .addWeeklyRule()
                              .onlyOnWeek(week);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
week = 3を代入
recurrence = 毎年第3週目に繰り返すルールを代入

onlyOnWeekday(day)

サンプルコード13
//onlyOnWeekdayのサンプルコード
function sampleCode13() {
  var date = new Date();
  var day = CalendarApp.Weekday.MONDAY;
  var recurrence = CalendarApp.newRecurrence()
                              .addDailyRule()
                              .onlyOnWeekday(day);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
day = 月曜日を代入
recurrence = 毎週月曜日に繰り返すルールを代入

onlyOnWeekDays(days)

サンプルコード14
//onlyOnWeekDaysのサンプルコード
function sampleCode14() {
  var date = new Date();
  var days = [CalendarApp.Weekday.MONDAY, CalendarApp.Weekday.TUESDAY]; //配列で入れる
  var recurrence = CalendarApp.newRecurrence()
                              .addDailyRule()
                              .onlyOnWeekdays(days);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
days = 月曜日と火曜日を代入
recurrence = 対象の週の月曜日と火曜日に毎日繰り返すルールを代入

onlyOnWeeks(weeks)

※こちらのメソッドは現状うまく動作しません(2019年1月15日現在)

サンプルコード15
//onlyOnWeeksのサンプルコード
function sampleCode15() {
  var date = new Date();
  var weeks = [3, 5]; //配列で入れる
  var recurrence = CalendarApp.newRecurrence()
                              .addDailyRule()
                              .onlyOnWeeks(weeks);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
weeks = 3と5を配列で代入
recurrence = 毎年第3週目と第5週目に毎日繰り返すルールを代入

onlyOnYearDay(day)

サンプルコード16
//onlyOnYearDayのサンプルコード
function sampleCode16() {
  var date = new Date();
  var day = 46; //46日目(2月15日)を指定
  var recurrence = CalendarApp.newRecurrence()
                              .addYearlyRule()
                              .onlyOnYearDay(day);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
day = 1月1日から数えて46日目(2月15日)を指定
recurrence = 毎年46日目に繰り返すルールを代入

onlyOnYearDays(days)

サンプルコード17
//onlyOnYearDayのサンプルコード
function sampleCode17() {
  var date = new Date();
  var days = [46, 85]; //46日目(2月15日)と85日目(3月26日)を指定
  var recurrence = CalendarApp.newRecurrence()
                              .addYearlyRule()
                              .onlyOnYearDays(days);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
days = 1月1日から数えて46日目(2月15日)と85日目(3月26日)を指定
recurrence = 毎年46日目と85日目に繰り返すルールを代入

setTimeZone(timeZone)

サンプルコード18
//timeZoneのサンプルコード
function sampleCode18() {
  var date = new Date();
  var timeZone = "America/New_York";
  var recurrence = CalendarApp.newRecurrence()
                              .addMonthlyRule()
                              .times(5)
                              .addMonthlyExclusion()
                              .times(2)
                              .setTimeZone(timeZone);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
timezone = アメリカ時間をタイムゾーンに代入
recurrence = アメリカ時間で実行日から5ヶ月間に毎月繰り返される終日予定から最初の2ヶ月間を除外した繰り返しルールを代入

until(endDate)

サンプルコード19
//untilのサンプルコード
function sampleCode19() {
  var today = new Date();
  var year = today.getFullYear() + 1; //1年後の西暦を指定
  var month = today.getMonth() + 1;
  var date = today.getDate();
  var endDate = new Date(year + "/" + month + "/" + date);
  var recurrence = CalendarApp.newRecurrence()
                              .addWeeklyRule()
                              .until(endDate);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', today, recurrence);
}

『 変数の説明 』

today = プログラムを実行した日付オブジェクトを代入
year = 1年後の西暦を代入
month = 実行日と同じ月を代入
date = 実行日と同じ日にちを代入
endDate = 1年後の今日を代入
recurrence = 一年後の今日と同じ日付まで毎週1回繰り返すルールを代入

weekStartsOn(day)

サンプルコード20
//weekStartsOnのサンプルコード
function sampleCode20() {
  var date = new Date();
  var day = CalendarApp.Weekday.MONDAY;
  var recurrence = CalendarApp.newRecurrence()
                              .addWeeklyRule()
                              .weekStartsOn(day);
  CalendarApp.getDefaultCalendar()
             .createAllDayEventSeries('GAS Event', date, recurrence);
}

『 変数の説明 』

date = プログラムを実行した日付オブジェクトを代入
day = 月曜日を代入
recurrence = 月曜日を週のはじめとする毎週1回繰り返すルールを代入

まとめ

今回は繰り返し予定のRecurrenceRuleクラスのメソッドをご紹介しました。かなりのメソッド数がありましたが、どのメソッドがどんな働きをするのかを覚えて貰えれば、メソッドを組み合わせて自分要の繰り返し予定のルールを決めてしまいましょう。

すべてのサンプルコードはコピーしてスクリプトエディタに貼り付けることでそのまま利用が可能です。

Exit mobile version