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

スポンサーリンク

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

Calendarサービス

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

Calendarサービスの主なクラス

クラス説明
CalendarAppCalendarサービスのグローバルオブジェクト
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^)/

コメント

タイトルとURLをコピーしました