見出し画像

【GAS】でGoogleカレンダーの繰り返す予定を管理する!CalendarEventSeriesクラス編

GoogleAppsScript で Google カレンダーに作成された内容が同じの繰り返される予定の設定情報を取得したり、編集したりする場合は「CalendarEventSeries クラス」を使います。
ここで、予定に「繰り返される」と付けたのは、一回限りの予定があるため、その対比であることを表す為です。
なお、この単発の予定を扱うためとして「CalendarEvent クラス」があります。

また、GoogleAppsScript で Google カレンダーを扱うにあたり事前に知っておくべき、Google カレンダーがどの様なものかをまとめた記事もありますので、よろしければご参照ください。


CalendarEventSeries クラスの概要

Google カレンダーにあるカレンダー内の繰り返す予定をそれぞれオブジェクトとして扱えるのが、「CalendarEventSeries クラス」です。

この繰り返す予定を扱うクラスである「CalendarEventSeries クラス」は、一回限りの予定を扱う「CalendarEvent クラス」とは、持っている情報やできることはほぼ同じです。
以下にこれら二つのクラスの違いを挙げていきます。

  • 「CalendarEventSeries クラス(繰り返しの予定)」は予定を繰り返すためのルールを設定している。(EventRecurrence)

  • 「CalnedarEventSeries クラス(繰り返しの予定)」では、予定の開始日時や終了日時を取得することができない。

また、「CalendarEventSeries クラス」では設定した「繰り返しのルール」の再設定はできるものの、それ自体を取得して確認することはできない。(私自身が確認できていないだけかもしれませんが。)

CalendarEvent クラスのオブジェクトの構造

繰り返し予定(EventSeries)は大きな項目として、

  • 繰り返し予定の属性情報(タイトル、説明など)

  • 繰り返し予定の繰り返しのルール(EventRecurrence)(詳しくは別記事で)

  • 繰り返し予定のゲスト(Guest)

  • 繰り返し予定のリマインダー(Reminder)

からなります。

それぞれより詳しく見ると

予定の属性情報

変更不可能な属性情報

  • 繰り返し予定の ID

  • 繰り返し予定が作成された日時

  • 繰り返し予定の内容の最新更新日時

  • 繰り返し予定の作成者

  • 繰り返し予定が属しているカレンダーの ID

  • 繰り返し予定のオーナーが自分かどうか

変更可能な属性情報

  • 繰り返し予定のタイトル

  • 繰り返し予定の説明

  • 繰り返し予定の色

  • 繰り返し予定の場所

  • 繰り返し予定の公開設置

  • 繰り返し予定の予定に対する参加状況

  • 繰り返し予定のタグ情報

繰り返しのルール(EventRecurrence)

繰り返しルールの設定の仕方はこちらで紹介しています。

予定の参加者(Guest)

  1. 繰り返し予定への参加者情報

  2. 繰り返し予定へ誰でも参加できるかどうか

  3. 参加者の権限設定(招待、他の参加者の参照、繰り返し予定の編集)

繰り返し予定のリマインダー

  1. メールでのリマインダー設定

  2. ポップアップ通知でのリマインダー設定

  3. SMS でのリマインダー設定

CalendarEventSeries クラス のオブジェクトの取得

「CalendarEventSeries クラス」のオブジェクトを使う前に、そのオブジェクトを取得しなければなりませんが、ここでは、それぞれ他のクラスから「CalendarEventSeries クラス」のオブジェクトの取得の仕方を紹介したいと思います。

※ なお取得できるのは、全て「CalendarEventSeries クラス」の単体のオブジェクトで、リストなどにはなっておりません。

Calendar クラスから

以下に紹介する Calendar クラスのメソッドのより詳しい説明は、こちらの記事にあります。

カレンダーにある繰り返し予定の ID から繰り返し予定のオブジェクトの取得
 Calendar クラスのオブジェクト.getEventSeriesById(繰り返し予定の ID)

カレンダーに繰り返し予定を作成し、そのオブジェクトを取得する
 Caledar クラスのオブジェクト.createEventSeries(タイトル, 開始日時, 終了日時, 繰り返しのルール, (オプション))

カレンダーに繰り返しの終日予定を作成し、そのオブジェクトを取得する
 Caledar クラスのオブジェクト.createAllDayEventSeries(タイトル, 開始日, 繰り返しのルール, (オプション))

CalendarEvent クラスから

以下に紹介する CalendarEvent クラスのメソッドのより詳しい説明は、こちらの記事にあります。

繰り返しの予定(EventSeries)の中の一つの予定(Event)から、元の繰り返しの予定である「CalendarEventSeries クラス」のオブジェクトを取得できます。

CalendarEvent クラスのオブジェクト.getEventSeries()

CalendarEventSeries クラスのメソッド

取得した「CalendarEvent クラス(カレンダー)」のオブジェクトでできる事(メソッド)を紹介していきます。

繰り返し予定の属性情報の取得と設定

変更不可能な属性情報の取得

繰り返し予定 ID の取得
.getId()
引数:無し
戻り値:予定の ID(文字列)

繰り返し予定が作成された日時の取得
.getDateCreated()
引数:無し
戻り値:予定が作成された日時(Date クラスのオブジェクト)

繰り返し予定の最終の内容更新日時の取得
.getLastUpdated()
引数:無し
戻り値:予定が更新された最後の日時(Date クラスのオブジェクト)

繰り返し予定が属しているカレンダーの ID を取得
.getOriginalCalendarId()
引数:無し
戻り値:カレンダーの ID(文字列)

自分が繰り返し予定のオーナーかどうか
.isOwnedByMe()
引数:無し
戻り値:自分がオーナーであれば true、でなければ false(ブール値)

繰り返し予定の作成者のメールアドレスの取得
.getCreators()
引数:無し
戻り値:予定を作成したユーザーたちのメールアドレス(文字列のリスト)

変更可能な属性情報の取得と設定

  • 予定のタイトル

<取得>
.getTitle()
引数:無し
戻り値:予定のタイトル(文字列)
<設定>
.setTitle(タイトル)
引数:予定のタイトル(文字列)
戻り値:CalendarEvent クラスのオブジェクト

  • 予定の説明

<取得>
.getDescription()
引数:無し
戻り値:予定の説明(文字列)
<設定>
.setDescription(説明)
引数:予定の説明(文字列)
戻り値:CalendarEvent クラスのオブジェクト

  • 予定の色

<取得>
.getColor()
引数:無し
戻り値:予定の色(CalendarApp.EventColor のプロパティのインデックス)
<設定>
.setColor(色)
引数:予定の色(CalendarApp.EventColor のプロパティ
戻り値:CalendarEvent クラスのオブジェクト

  • 予定の場所

<取得>
.getLocation()
引数:無し
戻り値:予定の場所(文字列)
<設定>
.setLocation(場所)
引数:予定の場所(文字列)
戻り値:CalendarEvent クラスのオブジェクト

  • 予定の公開設定

予定が公開されているか、自分のみしか閲覧できないかの設定。

<取得>
.getVisibility()
引数:無し
戻り値:予定の公開設定(CalendarApp.Visibilityのプロパティ)
<設定>
.setVisibility(公開設定)
引数:公開設定(CalendarApp.Visibilityのプロパティ)
戻り値:CalendarEvent クラスのオブジェクト

  • 自分の予定に対する参加状況

予定に対して自分が、参加するのかしないのか、まだ決めかねているのか、そもそもその予定のオーナーであるかどうかの情報。

<取得>
.getMyStatus()
引数:無し
戻り値:自分の参加状況のステータス(CalendarApp.GuestStatusのプロパティ)
<設定>
.setMyStatus(参加状況)
引数:参加状況のステータス(CalendarApp.GuestStatusのプロパティ)
戻り値:CalendarEvent クラスのオブジェクト

  • 予定のタグ情報

予定のタグとは、ブラウザ上の Google カレンダーのインターフェイスなどから参照できる情報ではなく、GoogleAppsScript のみから参照や設定ができ、プログラミング的に何かメモや目印となるものとして設定できるものです。
なおタグは、「キーワード」と「内容(文字列)」のセットで記録されます。

<全てのキーワードの取得>
.getAllTagKeys()
引数:無し
戻り値:設定された全てのキーワード(文字列のリスト)
<タグの取得>
.getTag(キーワード)
引数:タグのキーワード(文字列)
戻り値:キーワードに該当した内容(文字列)
<タグの設定>
.setTag(キーワード, 内容)
引数:タグのキーワード(文字列)、内容(文字列)
戻り値:CalendarEvent クラスのオブジェクト
<タグの削除>
.deleteTag(タグのキー)
引数:タグのキー(文字列)
戻り値:CalendarEvent クラスのオブジェクト

繰り返し予定のルールと日時の再設定

繰り返しの予定を作成する際に、予定の日時と繰り返しのルールを設定するのですが、ここで紹介するように再度それらを設定し直すことができます。
なお、再設定はできますが、すでに設定されている予定の日時や繰り返しのルールを取得し確認する術は、直接このクラスのオブジェクトからは行えそうにありません。

再設定する際に「繰り返しのルール(EventRecurrence)」を作成して引数に指定しますが、この「繰り返しのルール」の説明と作成の仕方は、こちらの記事で紹介しています。

また、再設定する際に使うメソッド名は同じなのですが、「終日の予定」か「終日の予定でないか」で引数が異なってきます。

繰り返す終日の予定に再設定
.setRecurrence(繰り返しのルール, 開始日)
引数:繰り返しのルール(EventRecurrence クラスのオブジェクト)、開始日(Date クラスのオブジェクト)
戻り値:CalendarEventSeries クラスのオブジェクト

繰り返す終日でないの予定に再設定
.setRecurrence(繰り返しのルール, 予定の開始日時、予定の終了日時)
引数:繰り返しのルール(EventRecurrence クラスのオブジェクト)、予定の開始日時・終了日時(共に Date クラスのオブジェクト)
戻り値:CalendarEventSeries クラスのオブジェクト
※ 予定の開始日時・終了日時は、繰り返しの開始、終了の日時ではなく、繰り返す中の最初の予定の開始日時と終了日時を示します。

繰り返し予定の参加者の管理

繰り返し予定の参加者(Guest)の一人ひとりはそれぞれ「EventGuest クラス」のオブジェクトとして扱えます。
この「EventGuest クラス」のオブジェクトには、その参加者の

  • 名前(.getName())

  • メールアドレス(.getEmail())

  • 予定への参加状況のステータス(.getGuestStatus()で「CalendarApp.GuestStatusのプロパティ」として取得)

  • 参加者が招待した出席する人数(.getAdditionalGuests()で取得可)

の情報を持っています。

<参加者の取得、追加、削除>

参加者の取得

全ての繰り返し予定の参加者を取得
.getGuestList()
引数:無し
戻り値:オーナーを除いた参加者全員(EventGuest クラスのオブジェクトのリスト)

参加者のメールアドレスから取得
.getGuestByEmail(メールアドレス)
引数:参加者のメールアドレス(文字列)
戻り値:参加者(EventGuest クラスのオブジェクト)または該当しない場合は null

参加者の追加

.addGuest(メールアドレス)
引数:追加する参加者のメールアドレス(文字列)
戻り値:CalendarEvent クラスのオブジェクト

参加者の削除

.removeGuest(メールアドレス)
引数:削除される参加者のメールアドレス(文字列)
戻り値:CalendarEvent クラスのオブジェクト

<参加者の権限の管理>

誰もが自分を繰り返し予定の参加者に追加できるかの設定
<誰もが参加者になれるかどうか>
.anyoneCanAddSelf()
引数:無し
戻り値:誰もが自分を繰り返し予定の参加者に追加できる場合 true、できない場合 false(ブール値)
<設定>
setAnyoneCanAddSelf(ture OR false)
引数:誰もが自分を参加者に追加できるようにする場合 true、でない場合 false(ブール値)
戻り値:CalendarEvent クラスのオブジェクト

参加者による他者の招待
<招待できるかどうか>
.guestsCanInviteOthers()
引数:無し
戻り値:招待できる場合 true、できない場合 false(ブール値)
<設定>
setGuestsCanInviteOthers(ture OR false)
引数:参加者が他者を招待できるようにする場合 true、でない場合 false(ブール値)
戻り値:CalendarEvent クラスのオブジェクト

参加者による他の参加者の参照
<参照できるかどうか>
.guestsCanSeeGuests()
引数:無し
戻り値:参照できる場合 true、できない場合 false(ブール値)
<設定>
setGuestsCanSeeGuests(ture OR false)
引数:参加者が他者を参照できるようにする場合 true、でない場合 false(ブール値)
戻り値:CalendarEvent クラスのオブジェクト

参加者による繰り返し予定の編集
<編集できるかどうか>
.guestsCanModify()
引数:無し
戻り値:編集できる場合 true、できない場合 false(ブール値)
<設定>
setGuestsCanModify(ture OR false)
引数:参加者が繰り返し予定を編集できる様にする場合 true、でない場合 false(ブール値)
戻り値:CalendarEvent クラスのオブジェクト

リマインダーの設定

予定日時の前にその予定の通知で知らせてくれるリマインダーを設定できます。
リマインダーは通知したい予定日時の分単位前として設定します。(例:15分前にリマインダーを設定  →   15)

また、既存の設定されたリマインダーを取得する場合、取得されるのは整数のリストですが、この整数は設定した予定の何分前に通知するかを示す分数(ふんすう)を表します。

自分のメールアドレス宛にリマインダーを送る
<既存のリマインダーの取得>
.getEmailReminders()
引数:無し
戻り値:全てのリマインダーが何分前に通知するかの数字のリスト(整数のリスト)
<リマインダーの追加>
.addEmailRemainder(何分前に通知するか)
引数:何分前に通知するかの分数(整数)
戻り値:CalendarEvent クラスのオブジェクト

Google カレンダーのポップアップのリマインダー
<既存のリマインダーの取得>
.getPopupReminders()
引数:無し
戻り値:全てのリマインダーが何分前に通知するかの数字のリスト(整数のリスト)
<リマインダーの追加>
.addPopupRemainder(何分前に通知するか)
引数:何分前に通知するかの分数(整数)
戻り値:CalendarEvent クラスのオブジェクト

SMS で自分宛にリマインダーを送る
<既存のリマインダーの取得>
.getSmsReminders()
引数:無し
戻り値:全てのリマインダーが何分前に通知するかの数字のリスト(整数のリスト)
<リマインダーの追加>
.addSmsRemainder(何分前に通知するか)
引数:何分前に通知するかの分数(整数)
戻り値:CalendarEvent クラスのオブジェクト

全てのリマインダーを削除
.removeAllReminders()
引数:無し
戻り値:CalendarEvent クラスのオブジェクト

リマインダーをデフォルト設定の状態にする
.resetRemindersToDefault()
引数:無し
戻り値:CalendarEvent クラスのオブジェクト

繰り返し予定自体の削除

.deleteEventSeries()
引数:無し
戻り値:無し

この記事が気に入ったらサポートをしてみませんか?