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は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メソッドの引数に月曜〜金曜日を設定しています。

ミキティー!
