【GAS】setRecurrenceメソッドを完全マスター

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
icon_for_CalendarApp_setRecurrence

繰り返しルールを設定する— setRecurrence()

今回のメソッドは、繰り返し予定に対して繰り返しルールを設定するためのメソッドを紹介します。

繰り返し予定に対しては、繰り返しルールの設定及び再設定をするためのメソッドが用意されています。それが今回ご紹介するsetRecurrence()になります。繰り返しのルールを作るためには、こちらの記事で説明しているやり方に沿ってルール作りをします。

        1. setRecurrence(recurrence, startDate)
        2. setRecurrence(recurrence, startTime, endTime)

『 引数に入れる値 』

  • recurrence(EventRecurrence) — 繰り返しルールを指定
  • startDate(日付オブジェクト) — 開始日を指定
  • startTime(日付オブジェクト) — 開始日時を指定
  • endTime(日付オブジェクト) — 終了日時を指定

setRecurrence(recurrence, startDate)

サンプルコード1
//繰り返しの終日予定ルールを設定するコード
function sampleCodeForCalendarAppSetRecurrence1() {
  var calendar = CalendarApp.getDefaultCalendar();
  var title = "繰り返し予定設定テスト";
  var startDate = new Date();
  var endDate = new Date();
  endDate.setYear(endDate.getFullYear() + 1);
  var eventSeries = calendar.createAllDayEvent(title, startDate).getEventSeries();
  var recurrence = CalendarApp.newRecurrence().addWeeklyRule()
                                              .onlyOnWeekday(CalendarApp.Weekday.WEDNESDAY)
                                              .until(new Date(endDate));
  eventSeries.setRecurrence(recurrence, startDate);
}

『 変数の説明 』

calendar = デフォルトカレンダーを取得
title = 予定のタイトルを代入
startDate = 繰り返し予定の開始日を代入
endDate = 繰り返し予定の終了日を代入(開始日の1年後)
eventSeries = 予定を新規作成して代入
recurrence = 繰り返しルールを代入

スクリプトができたら▶ボタンでプログラムを実行してみましょう。今回のコードではデフォルトカレンダーのプログラム実行日から1年間毎週水曜日に繰り返し予定を設定するコードを書いてみました。今回は予定を新規作成してその予定に繰り返しルールを適用して繰り返し予定に設定してありますが、既存の予定の繰り返し設定を変更することもできますので、いろいろな使い方を試してみて下さい。

setRecurrence(recurrence, startTime, endTime)

サンプルコード2
//繰り返しの時間指定(終日予定ではない)予定ルールを設定するコード
function sampleCodeForCalendarAppSetRecurrence2() {
  var calendar = CalendarApp.getDefaultCalendar();
  var title = "繰り返し予定設定テスト";
  var startTime = new Date();
  var endTime = new Date();
  var endDate = new Date();
  endTime.setHours(endTime.getHours() + 1);
  endDate.setYear(endDate.getFullYear() + 1);
  var eventSeries = calendar.createAllDayEvent(title, startTime).getEventSeries();
  var recurrence = CalendarApp.newRecurrence().addWeeklyRule()
                                              .onlyOnWeekdays([CalendarApp.Weekday.TUESDAY, CalendarApp.Weekday.THURSDAY])
                                              .until(new Date(endDate));
  eventSeries.setRecurrence(recurrence, startTime, endTime);
}

『 変数の説明 』

calendar = デフォルトカレンダーを取得
title = 予定のタイトルを代入
startTime = 繰り返し予定の開始時間を代入
endTime = 繰り返し予定の終了時間を代入(開始時間の1時間後)
endDate = 繰り返し予定の終了日を代入(開始日の1年後)
eventSeries = 予定を新規作成して代入
recurrence = 繰り返しルールを代入

サンプルコード2はプログラム実行時間から1時間後までの予定を毎週木曜日に1年後まで繰り返し作成するコードを書いてみました。サンプルコード1と2の大きな違いは、コード1は終日予定の繰り返し予定を作成するのに対し、コード2は時間指定の繰り返し予定を作成するために使われます。用途に合わせて使い分けて下さい。

まとめ

今回は繰り返し予定のルール設定をプログラム的に行う方法について説明しました。繰り返しルールの設定はかなりややこしいので、解説ページを確認しながら使い方を身に着けてしまいましょう。

SNSでもご購読できます。

コメントを残す

*