Calendar

【GAS】Googleカレンダーに繰り返しの予定を追加する

createEventSeries – 繰り返しの予定を追加する

Googleカレンダーに繰り返しの予定を追加するにはcreateEventSeriesメソッドを使います。

月次の繰り返し予定の追加

日次の繰り返し予定の追加

土日を除く繰り返しの予定を追加する

以下は週次の予定を追加する例です。

const createTestEvents = () => {
  const calendarApp = CalendarApp
  const defaultCalendar = calendarApp.getDefaultCalendar()

  const eventName = 'テストだよ~ん'
  const startTime = new Date(2024, 2, 22, 10, 0)
  const endTime = new Date(2024, 2, 22, 11, 0)
  const until = new Date(2024, 4, 1)
  const recurrence = calendarApp.newRecurrence()
  const weeklyRecurrence = recurrence.addWeeklyRule().onlyOnWeekday(calendarApp.Weekday.FRIDAY).until(until)

  const events = defaultCalendar.createEventSeries(eventName, startTime, endTime, weeklyRecurrence)
}

実行結果

createEventSeriesの構文

カレンダーオブジェクト.createEventSeries(予定のタイトル, 開始日時, 終了日時, 繰り返しルール, オプション)

createEventSeriesは4つの必須の引数と1つの任意のオプションをとります。

予定のタイトル

予定のタイトルは文字列です。

上のように変数に文字列を入れてもいいですし、直接文字列を書いても構いません。

これでもオーケー

const events = defaultCalendar.createEventSeries('テストだよ~ん', startTime, endTime, weeklyRecurrence)

開始日時、終了日時

createEventSeriesメソッドに設定する開始日時、終了日時は最初の予定です。

ここでは3月22日を最初の予定にしています。

以降は繰り返しルールに沿って予定が設定されます。

つまり、繰り返しルールを毎週金曜日にしていたとしても、最初の予定が土曜日であれば、最初の予定のみ土曜日になります


開始日時、終了日時は日付オブジェクトにします。

日付オブジェクトはこのように設定しています。

const startTime = new Date(2024, 2, 22, 10, 0)
const endTime = new Date(2024, 2, 22, 11, 0)

日付オブジェクトをつくるときはnew Date( )として、( )の中には年、月、日、時、分の順番に書きます。

上の例ですと開始日時は2024年3月22日10時00分、終了日時は2024年3月22日11時00分となっています。

月を「2」と指定しているのに3月になっているのは少し奇妙に感じられるかもしれません。

これは月が配列で表現されており、1番目を0と表現して、以降は順番となるからです。

つまりこういうことです。

  • 0:1月
  • 1:2月
  • 2:3月
  • 3:4月
  • 4:5月
  • 5:6月
  • 6:7月
  • 7:8月
  • 8:9月
  • 9:10月
  • 10:11月
  • 11:12月

繰り返しルール

createEventSeriesは繰り返される予定を設定するためのメソッドです。

繰り返すためには繰り返しのルールが必要です。

const until = new Date(2024, 4, 1)
const calendarApp = CalendarApp
const recurrence = calendarApp.newRecurrence()
const weeklyRecurrence = recurrence.addWeeklyRule().onlyOnWeekday(calendarApp.Weekday.FRIDAY).until(until)

カレンダーアプリオブジェクトをつくります。

次にカレンダーアプリオブジェクトのnewRecurrenceメソッドで繰り返しルールオブジェクトをつくります。

最後にルールを設定します。

上の例は週次のルールを設定しています。毎週金曜日、2024年5月1日まで、というルールです。

onlyOnWeekdayメソッドは週1回のルールを設定するメソッドです。

仮に週2回のルールを設定したい場合はonlyOnWeekdaysメソッドを使います。

onlyOnWeekdaysメソッドの場合は配列をわたします。


水曜日と金曜日に予定を設定する例

// FYI
const weeklyRecurrence = recurrence.addWeeklyRule().onlyOnWeekdays([calendarApp.Weekday.WEDNESDAY, calendarApp.Weekday.FRIDAY]).until(until)

オプションの設定方法

オプションはこのように設定します。

const options = {
  description: 'テストだよ~ん',
  location: 'アリアハン',
  guests: '*****@gmail.com',
  sendInvites: true,
}

説明はdescription、場所はlocation、ゲストはguests、sendInvitesは送信メールの可否です。

この場合は説明に「テストだよ~ん」、場所に「アリアハン」、ゲストに「*****@gmail.com」、送信メールを「送る」設定にしています。

コード

const createTestEvents = () => {
  const calendarApp = CalendarApp
  const defaultCalendar = calendarApp.getDefaultCalendar()

  const eventName = 'テストだよ~ん'
  const startTime = new Date(2024, 2, 23, 10, 0)
  const endTime = new Date(2024, 2, 23, 11, 0)
  const until = new Date(2024, 4, 1)
  const options = {
    description: 'テストだよ~ん',
    location: 'アリアハン',
    guests: '*****@gmail.com',
    sendInvites: true,
  }
  const recurrence = calendarApp.newRecurrence()
  const weeklyRecurrence = recurrence.addWeeklyRule().onlyOnWeekday(calendarApp.Weekday.FRIDAY).until(until)

  const events = defaultCalendar.createEventSeries(eventName, startTime, endTime, weeklyRecurrence, options)
}

実行結果

createEventSeriesを使うには

createEventSeriesを使うにはカレンダーオブジェクトを取得する必要があります。

カレンダーオブジェクトの取得方法

const calendarApp = CalendarApp
const defaultCalendar = calendarApp.getDefaultCalendar()

このコードではgetDefaultCalendarメソッドを使って自分のデフォルトのカレンダーを取得しています。

デフォルトのカレンダーとは自分のメイン(いつも使う)のカレンダーという意味です。

自分のデフォルトのカレンダー以外にしたい場合は、IDで指定したり、新規につくったりしてカレンダーオブジェクトを取得できます。

月次の予定を追加する

せっかくなので月次の繰り返し予定の追加方法も。

const createTestEvents = () => {
  const calendarApp = CalendarApp
  const defaultCalendar = calendarApp.getDefaultCalendar()

  const eventName = 'テストだよ~ん'
  const startTime = new Date(2024, 2, 24, 10, 0)
  const endTime = new Date(2024, 2, 24, 11, 0)
  const until = new Date(2024, 6, 31)
  const recurrence = calendarApp.newRecurrence()
  const monthlyRecurrence = recurrence.addMonthlyRule().onlyOnMonthDay(24).until(until)

  const events = defaultCalendar.createEventSeries(eventName, startTime, endTime, monthlyRecurrence)
}

週次の予定を設定するときはaddWeeklyRuleメソッドを使いましたが、月次の予定はaddMonthlyRuleメソッドです。

月次のイベントにはonlyOnMonthDayメソッドがあり、これを使って月の何日かを指定します。

上のコードでは毎月24日を指定しています。

const monthlyRecurrence = recurrence.addMonthlyRule().onlyOnMonthDay(24).until(until)

untilの使い方は週次のルールと同じです。いつまで繰り返しルールを適用するのかを指定します。ここでは7月30日までとしています。

日次の予定を追加する

日次の予定も同じです。

const createTestEvents = () => {
  const calendarApp = CalendarApp
  const defaultCalendar = calendarApp.getDefaultCalendar()

  const eventName = 'テストだよ~ん'
  const startTime = new Date(2024, 2, 24, 10, 0)
  const endTime = new Date(2024, 2, 24, 11, 0)
  const until = new Date(2024, 6, 31)
  const recurrence = calendarApp.newRecurrence()
  const dailyRecurrence = recurrence.addDailyRule().until(until)

  const events = defaultCalendar.createEventSeries(eventName, startTime, endTime, dailyRecurrence)
}

土日を除く予定を追加する

日次の予定で土日を除く場合はどうしたらいいでしょうか?

いろいろな方法があると思いますが、日次の予定ではなく週次の予定を月〜金に入れるのが簡単です。

const createTestEvents = () => {
  const calendarApp = CalendarApp
  const defaultCalendar = calendarApp.getDefaultCalendar()

  const eventName = 'テストだよ~ん'
  const startTime = new Date(2024, 2, 24, 10, 0)
  const endTime = new Date(2024, 2, 24, 11, 0)
  const until = new Date(2024, 6, 31)
  const recurrence = calendarApp.newRecurrence()
  const weeklyRecurrence = recurrence.addWeeklyRule().onlyOnWeekdays([calendarApp.Weekday.MONDAY, calendarApp.Weekday.TUESDAY, calendarApp.Weekday.WEDNESDAY, calendarApp.Weekday.THURSDAY, calendarApp.Weekday.FRIDAY]).until(until)

  const events = defaultCalendar.createEventSeries(eventName, startTime, endTime, weeklyRecurrence)
}

長くなっていて分かりづらいかもしれませんが、onlyOnWeekdaysメソッドの引数に月曜〜金曜日を設定しています。


ミキティー!

Copied title and URL