【GAS】でGoogleカレンダーの予定の作成や取得をする!Calendarクラス編
GoogleAppsScript で Google カレンダー内のカレンダーに予定を作成したり、既存の予定を取得したい場合、「Calendar クラス」を使って、分類されたカレンダー内の予定の操作などができます。
また、GoogleAppsScript で Google カレンダーを扱うにあたり事前に知っておくべき、Google カレンダーがどの様なものかをまとめた記事もありますので、よろしければご参照ください。
Calendar クラスの概要
カレンダー(Calendar)とは、Google カレンダー内に、同じカテゴリーでまとまった予定が収まっているものになります。
そのカレンダーを GoogleAppsScript のオブジェクトとして扱えるのが、「Calendar クラス」です。
Calendar クラスのオブジェクトの構造
カレンダーは大きな項目として、
カレンダーの属性情報(カレンダー名、説明など)
予定(CalendarEvent)や繰り返しの予定( CalendarEventSeries)
から構成されています。
それぞれ詳しく見ると
<カレンダーの属性情報>
変更不可能な属性情報
カレンダー ID
デフォルトのカレンダーかどうか
自分がそのカレンダーのオーナー(owned)かどうか
変更可能な属性情報
カレンダー名
カレンダーの説明
カレンダーの色
カレンダーに関わるタイムゾーン
予定が表示か非表示にされているかの設定
マイカレンダーのリストへの掲載設定
<カレンダーの予定>
上記にもあるとおり、カレンダーには同じカテゴリーでまとまった予定が収められていますが、そんな予定には二種類あります。
一つは、「一回限りの予定」であり、もう一つは「繰り返される予定」です。
一回限りの予定(CalendarEvent クラスのオブジェクト)
「一回限りの予定」とは、予定が、ある日時に一度だけ作成さるものを指します。
同窓会の開催の予定を作成するなど、その日限り(一回限り)の予定を作成する場合です。
「一回限りの予定」は、その予定の時間や内容が収まった「CalendarEvent クラス」のオブジェクトとしてカレンダーに収まっています。
繰り返される予定(CalendarEventSeries クラスのオブジェクト)
繰り返される予定は、先ほどの一回限りの予定の対比にあたり、内容が同じ予定を複数の異なる日時に指定できるもので、「CalendarEventSeries クラスのオブジェクトとしてカレンダーに収まっています。
Calendar クラス のオブジェクトの取得
「Calendar クラス」のオブジェクトを使う前に、そのオブジェクトを取得しなければなりませんが、ここでは、それぞれ他のクラスから「Calendar クラス」のオブジェクトの取得の仕方を紹介したいと思います。
それぞれのクラスからと書きましたが、「Calendar クラス」のオブジェクトは「CalendarApp クラス」からしか取得できませんので、それだけからの説明になります。
CalendarApp クラスから
以下に紹介する CalendarApp クラスのメソッドのより詳しい説明は、こちらの記事にあります。
戻り値が全て「Calendar クラス」のオブジェクトのメソッド
戻り値が全て「Calendar クラス」のオブジェクトのリストのメソッド
Calendar クラスのメソッド
取得した「Calendar クラス(カレンダー)」のオブジェクトでできる事(メソッド)を紹介していきます。
カレンダーの属性情報の取得または設定
変更不可能な属性情報の取得
変更可能な属性情報の取得と設定
カレンダー名
カレンダーの説明
カレンダーの色
カレンダーに関連するタイムゾーン(timeZone)
カレンダーの予定の表示、非表示
カレンダーがマイカレンダーのリストにあるか、ないか
カレンダーの予定の作成と取得
カレンダーに予定の作成や取得ができるメソッドを、予定の作成と取得で分けて紹介していきます。
<予定の作成>
予定を作成する際に指定できる「オプション」という引数がありますが、これは任意の引数であり、予定に追加情報を指定したい場合に、辞書型として設定します。
以下に、指定できる項目を紹介します。
設定例
options = {
description: '予定を作ってみた',
location: '東京駅',
guests: 'sample_A@e_mail.com, sample_B@e_mail.com',
sendInvites: true
}
caledar.createEvent('テスト', start, end, options);
一回限りの予定の作成
終日の予定でない予定
引数:
予定のタイトル(文字列)
開始日時(Date クラスのオブジェクト)
終了日時(Date クラスのオブジェクト)
(任意)オプション(辞書型:この章頭に説明あり)
戻り値:作成された予定(CalendarEvent クラスのオブジェクト)
// 開始日時(2024/4/1 10:00)
let startTime = new Date('April 1, 2024 10:00:00');
// 終了日時(2024/4/1 12:00)
let endTime = new Date('April 1, 2024 12:00:00');
let newEvent = calendar.createEvent('テスト', startTime, endTime);
終日の予定(1 日のみの予定)
引数:
予定のタイトル(文字列)
日付(Date クラスのオブジェクト)
(任意)オプション(辞書型:この章頭に説明あり)
戻り値:作成された終日の予定(CalendarEvent クラスのオブジェクト)
let newAllDayEvent = calendar.createAllDayEvent('エイプリルフールの次の日',new Date('April 2, 2024'));
終日の予定(複数日にわたる予定)
引数:
予定のタイトル(文字列)
開始日(Date クラスのオブジェクト)
終了日(Date クラスのオブジェクト)
(任意)オプション(辞書型:この章頭に説明あり)
戻り値:作成された複数日にわたる終日の予定(CalendarEvent クラスのオブジェクト)
// 開始日
let startDay = new Date('March 3, 2024');
// 終了日
let endDay = new Date('March 6, 2024');
let newAllDayEvent = calendar.createAllDayEvent('5月の4連休', startDay, endDay);
繰り返される予定の作成
終日の予定でない予定
引数:
予定のタイトル(文字列)
開始日時(Date クラスのオブジェクト)
終了日時(Date クラスのオブジェクト)
繰り返しのルール(EventRecurrence クラスのオブジェクト)→ 詳しくはこちら
戻り値:作成された繰り返しの予定(CalendarEventSeries クラスのオブジェクト)
// 毎週火曜日の7時半から8時にゴミ出しの予定を作成
// 火曜日の7時半から8時の日時を設定(2024/4/2は火曜日)
let startDate = new Date('April 2, 2024 07:30:00');
let endDate = new Date('April 2, 2024 08:00:00');
// 毎週繰り返すルールを作成
let recurrenceRule = CalendarApp.newRecurrence().addWeeklyRule();
let newEventSeries = calendar.createEventSeries('ゴミ出し', startDate, endDate, recurrenceRule);
終日の予定
引数:
予定のタイトル(文字列)
日付(Date クラスのオブジェクト)
繰り返しのルール(EventRecurrence クラスのオブジェクト)→ 詳しくはこちら
戻り値:作成された終日の繰り返し予定(CalendarEventSeries クラスのオブジェクト)
// 毎週水曜日に買い出しの予定を作成
// 水曜曜日の日付を設定(2024/4/3は水曜日)
let startDate = new Date('April 3, 2024');
// 毎週繰り返すルールを作成
let recurrenceRule = CalendarApp.newRecurrence().addWeeklyRule();
let newEventSeries = calendar.createEventSeries('買い出し', startDate, recurrenceRule);
<既存の予定の取得>
一回限りの予定の取得
予定の ID から予定を取得
引数:予定の ID(文字列)
戻り値:ID に対応する予定(CalendarEvent クラスのオブジェクト)
let event = calendar.getEventById('/*予定のID*/');
指定日にある予定を取得
引数:
日付(Date クラスのオブジェクト)
(任意)オプション(辞書型)
戻り値:その日の予定たち(CalendarEvent クラスのオブジェクトのリスト)
オプションには、
が指定できます。
let events = calendar.getEventsForDay(new Date('April 3, 2024'));
指定の日時の範囲内にある予定を取得
引数:
範囲開始日時(Date クラスのオブジェクト)
範囲終了日時(Date クラスのオブジェクト)
(任意)オプション(辞書型)
戻り値:指定期間内の予定たち(CalendarEvent クラスのオブジェクトのリスト)
オプションには、
が指定できます。
// 予定の取得範囲の期間の設置(2024/4/1 6:00 から 2024/4/30 18:00までの期間)
let startDate = new Date('April 1, 2024 06:00:00');
let endDate = new Date('April 30, 2024 18:00:00');
let events = calendar.getEvents(startDate, endDate)
繰り返される予定の取得
繰り返し予定の ID から繰り返し予定を取得
引数:繰り返し予定の ID(文字列)
戻り値:ID に対応する繰り返し予定(CalendarEventSeries クラスのオブジェクト)
let event = calendar.getEventSeriesById('/*繰り返し予定のID*/');
カレンダー自体の削除
カレンダー自体を削除します。
引数:無し
戻り値:無し
calendarObject.deleteCalendar();
外部から取り込んだカレンダーを削除する
以前に自分の Google カレンダーに取り入れた、他のユーザーなどが作成した外部のカレンダーを削除する。
引数:無し
戻り値:無し
calendarObject.unsubscribeFromCalendar();
この記事が気に入ったらサポートをしてみませんか?