見出し画像

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

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

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


CalendarEvent クラスの概要

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

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

予定(Event)は大きな項目として、

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

  • 予定の日時(開始日時と終了日時)

  • 予定の参加者(紹介された人)

  • 予定のリマインダー

からなります。

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

予定の属性情報

変更不可能な属性情報

  • 予定の ID

  • 予定が作成された日時

  • 予定の内容の最新更新日時

  • 予定の作成者

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

  • 予定のオーナーが自分かどうか

変更可能な属性情報

  • 予定のタイトル

  • 予定の説明

  • 予定の色

  • 予定の場所

  • 予定の公開設置

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

  • 予定のタグ情報

予定の日時

終日予定:予定の開始日と終了日

終日予定でない:予定の開始日時と終了日時

予定の参加者(Guest)

  1. 予定への参加者情報

  2. 予定へ誰でも参加できるかどうか

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

予定のリマインダー

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

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

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

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

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

Calendar クラスから

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

戻り値が全て「CalendarEvent クラス」のオブジェクトのメソッド

予定の ID から予定のオブジェクトの取得
 Calendar クラスオブジェクト.getEventById(予定の ID)

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

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

戻り値が全て「CalendarEvent クラス」のオブジェクトのリストのメソッド

指定期間内にある予定オブジェクトの取得
 Calendar クラスオブジェクト.getEvents(指定開始日時, 指定終了日時,(オプション))

指定日内の予定のオブジェクトの取得
 Calendar クラスオブジェクト.getEventForDay(指定日,(オプション))

CalendarEvent クラスのメソッド

取得した「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 クラスのオブジェクト

予定の日時の取得と編集

<全ての予定の日時>

予定の開始日時の取得
.getStartTime()
引数:無し
戻り値:予定の開始日時(Date クラスのオブジェクト)

予定の終了日時の取得
.getEndTime()
引数:無し
戻り値:予定の終了日時(Date クラスのオブジェクト)

予定期間の日時の編集
.setTime(開始日時, 終了日時)
引数:開始日時(Date クラスオブジェクト)、終了日時(Date クラスオブジェクト)
戻り値: CalendarEvent クラスのオブジェクト

<終日予定の日時>

終日予定かどうか
.isAllDayEvent()
引数:無し
戻り値:終日予定なら true、でなければ false(ブール値)

終日予定の開始日の取得
.getAllDayStartDate()
引数:無し
戻り値:開始日(Date クラスのオブジェクト)

終日予定の終了日の取得
.getAllDayEndDate()
引数:無し
戻り値:終了日(Date クラスのオブジェクト)

一日の終日予定に設定
.setAllDayDate(指定日)
引数:指定日(Date クラスのオブジェクト)
戻り値:CalendarEvent クラスのオブジェクト

複数日にわたる終日予定に設定
.setAllDayDates(開始日、終了日)
引数:開始日、終了日(ともに Date クラスのオブジェクト)
戻り値:CalendarEvent クラスのオブジェクト

予定の参加者の管理

予定の参加者(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 クラスのオブジェクト

予定が繰り返す予定の一部である場合

扱っている一つの予定が、繰り返される予定(CalendarEventSeries クラス)の中の一つである場合、その予定から繰り返される予定である母体(CalendarEventSeries クラスのオブジェクト)を取得することができます。

予定が繰り返されている予定かどうか
.isRecurringEvent()
引数:無し
戻り値:予定が繰り返される予定の一つである場合 true、でない場合 false(ブール値)

繰り返しの予定の取得
.getEventSeries()
引数:無し
戻り値:繰り返し予定(CalendarEventSeries クラスのオブジェクト)

予定自体の削除

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

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