【GAS GoogleAppsScript | Googleカレンダー】Googleカレンダーを操作するCalendarサービス(その3)

スポンサーリンク

Googleカレンダーを操作するCalendarサービス

Calendarサービス

Calandarサービスは、GASでGoogleカレンダーを操作するときに使うクラスとメンバーがまとめられています。Googleカレンダーに登録されたイベントの情報を取得したり、イベントを追加したり削除したりなどの操作が行えます。

Calendarサービスの主なクラス

クラス 説明
CalendarApp Calendarサービスのグローバルオブジェクト
Calendar カレンダーの操作をする機能を提供する
CalendarEvent 一つのイベントを操作する機能を提供する

Calendarサービスのクラスは、CalendarApp→Calendar→CalendarEventという改装構造になっています。これは、スプレッドシートサービスのときの、SpreadsheetApp→Spreadsheet→Sheet→Rangeと同じようにイメージしてもらえればOKです。

これまで、その1・その2ではCalendarAppクラス・Calendarクラスについて説明しました。

今回はその3ということで、最後にCalendarEventクラスについて説明していきたいと思います。

CalendarEventクラス

CalendarEventクラスは前述の通りCalendarサービスの中では第3階層目のクラスになります。上位階層Calendarクラスで取得したり作成した、予定(イベント)の一つ一つを操作するためのクラスです。

CalendarEventクラスの主なメンバーは次です。

メンバー 返り値 説明
addGuest(email) CalendarEvent イベントにゲストemailを追加する
deleteEvent() void イベントを削除する
getAllDayEndDate() Date 終日イベントの終了日を取得する
getAllDayStartDate() Date 終日イベントの開始日を取得する
getColor() String イベントの色を取得する
getCreators() String[] イベントの作成者を取得する
getDateCreated() Date イベントの作成日を取得する
getDescription() String イベントの説明を取得する
getEndTime() Date イベントの終了日時を取得する
getId() String イベントのIDを取得する
getLastUpdated() Date イベントの最終更新日を取得する
getLocation() String イベントの場所を取得する
getMyStatus() GuestStatus ユーザーのイベントステータスを取得する
getOriginalCalendarId() String イベントが最初に作成されたカレンダーのID取得を取得する
getStartTime() Date イベントの開始日を取得する
getTitle() String イベントのタイトルを取得する
getVisibility() Visibility イベントの可視性を取得する
isAllDayEvent() Boolean 終日イベントであるかどうかを判定する
isOwnedByMe() Boolean イベントがユーザーによって所有されているかどうかを判定する
removeGuest(email) CalendarEvent イベントからゲストemailを削除する
setAllDayDate(date) CalendarEvent 終日イベントの日付を設定する
setColor(color) CalendarEvent イベントの色をcolorに設定する
setDescription(description) CalendarEvent イベントの説明を設定する
setLocation(location) CalendarEvent イベントの場所を設定する
setMyStatus(status) CalendarEvent ユーザーのイベントステータスを取得する
setTime(start, end) CalendarEvent イベントの期間をstartからendに設定する
setTitle(title) CalendarEvent イベントのタイトルを設定する

上記の通りカレンダーに紐づく予定(イベント)に関する操作が中心のメソッドが揃っています。

イベントIDでイベントを取得する

次のサンプルイベントをGASで取得してみましょう。

上の画像の10月28日に予め作ったイベント「作った予定1」を使って、CalendarEventクラスの主なメンバーの動きを確認しましょう。

function test() {
  
  // カレンダーのID(IDはそれぞれ指定してください。)
  var calendarId = "*************@google.com"
  
  // カレンダーを取得する
  var calendar = CalendarApp.getCalendarById(calendarId)
  
  // ①指定期間の予定の一覧を取得する
  var events = calendar.getEventsForDay(new Date("2020/10/28"))
  
  // ②イベントIDを取得する(配列から取り出す)
  events.forEach(function(event, i , array){
      // ③イベントIDを書き出す
      Logger.log(event.getId()) // ④*********@google.com
  })
  
}

①で取得したイベントは配列形式で一覧となります。今回のサンプルの場合は、10月28日はイベントが一個しかありませんので、配列の要素は1つだけです。

②では配列の要素をforEachで順番に処理しています。③の部分で取り出したCalendarEventオブジェクトからIDを取得してログに表示させています。

このサンプルでは、要素が一つだけなので、④のように一つのイベントIDが書き出されます。(*は伏せ字です)

この④のイベントIDを使うことで、上位階層のクラスである、CalendarAppクラスやCalendarクラスのgetEventByIdメソッドで個別のイベントを取得することが出来ます。

以下のコードで、イベントIDからイベントを取得して、イベントのタイトルを取得し、ログに書き出すことが出来ます。

function test() {
  
   // カレンダーのID(IDはそれぞれ指定してください。)
  var calendarId = "********@google.com"
  
  // カレンダーを取得する
  var calendar = CalendarApp.getCalendarById(calendarId)
  
  // イベントをIDで取得する(さっきの④のIDを使う)
  var eventId = "**********@google.com"
  
  // イベントを取得する
  var event= calendar.getEventById(eventId)

  // イベントの情報をログに書き出す
  Logger.log(event.getTitle()) // 作ったカレンダー1
 
}

一番最後のログに書き出すところの、event.getTitle()のget~のメソッドを色々と変えることで、イベントのいろいろな情報を取得することが出来ます。

イベントの情報の変更したり追加したりする

次は、取得したイベントの情報を追加したり、変更したりする方法です。

メソッドで言うと、set~みたいなメソッドを使います。

早速、やってみましょう。先程のコードを利用して確認しましょう。イベントをIDで取得するところまでは同じです。

イベントを取得した後に、現在設定されている「説明(Description)」を取得して、その後setDescriptionメソッドで、新たに「説明(Description)」を上書きして、再度、設定されているものをgetDescriptionメソッドで取得するという流れです。

function test() {
  
   // カレンダーのID(IDはそれぞれ指定してください。)
  var calendarId = "*********@google.com"
  
  // カレンダーを取得する
  var calendar = CalendarApp.getCalendarById(calendarId)
  
  // イベントをIDで取得する(さっきの④のIDを使う)
  var eventId = "***********@google.com"
  
  // イベントを取得する
  var event= calendar.getEventById(eventId)

  // ********* ここまでは同じ **************
  
  // ⑤現在設定されている「説明(Description)」を取得する
  Logger.log(event.getDescription()) // お金の計算
  
  // ⑥説明を上書きする
  var description = "生活のためのお金の計算をする時間"
  event.setDescription(description)
  
  // ⑦再度、現在設定されている「説明(Description)」を取得する
  Logger.log(event.getDescription())  // 生活のためのお金の計算をする時間
 
}

実行すると、⑤と⑦で説明の中身が変わっていることが分かります。⑥のsetDescriptionメソッドで情報を上書き出来ていますね。

set~のメソッド部分を変更することで他の情報も書き換えや追加をすることが出来ます。

イベントを削除する

最後にイベントを削除する方法です。

イベントを削除するには、削除したいCalendarEventオブジェクトに対してdeleteEvent()メソッドを実行します。

構文

CalendarEventオブジェクト.deleteEvent()

簡単ですね。

次のコードでイベントを削除してみましょう。

function test() {
  
   // カレンダーのID(IDはそれぞれ指定してください。)
  var calendarId = "*********@google.com"
  
  // カレンダーを取得する
  var calendar = CalendarApp.getCalendarById(calendarId)
  
  // イベントをIDで取得する(さっきの④のIDを使う)
  var eventId = "***********@google.com"
  
  // イベントを取得する
  var event= calendar.getEventById(eventId)

  // ********* ここまでは同じ **************
  
  
  // ⑧イベントを削除する
  event.deleteEvent()
  
}

⑧でイベントを削除しています。

カレンダーを確認すると、10月28日の「作った予定1」のイベントが無くなっていることが確認出来ます。

まとめ

以上、その1、その2、その3でCalendarサービスについて説明しました!Calendarサービスをうまく使うことでいろいろな仕組みが作れそうですね\(^o^)/