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

スポンサーリンク

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

Calendarサービス

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

Calendarサービスの主なクラス

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

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

前回はその1ということで、CalendarAppクラスについて説明しました。

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

スポンサーリンク

Calendarクラス

Calendarクラスは前述の通りCalendarサービスの中では第2階層目のクラスになります。上位階層CalendarAppクラスで取得したカレンダーの一つ一つを操作するためのクラスです。

主なメンバーは次です。

メンバー返り値説明
 createAllDayEvent(title,date[,options]) CalendarEvent 日付(date)に終日予定(title)を作成
 createAllDayEvent(title, start, end[,options])CalendarEvent 日付(start)から日付(end)に終日予定(title)を作成
createAllDayEventSeries(title, start, recurrence[, options]) CalendarEventSeriesrecurrenceで日付(start)から定期開催される終日予定を作成
 createEvent(title, start[,end, options]) CalendarEvent期間(start)から期間(end)で予定(title)を作成
 createEventFromDescription(description) CalendarEvent 文章から判断して新しい予定を作成
 createEventSeries(title, start, end, recurrence[, options]) CalendarEventSeriesrecurrenceで定期開催される期間(start)から期間(end)の予定を作成
 deleteCalendar() Void カレンダーを完全に削除
 getColor() String カレンダーの設定色を取得
 getDescription() String カレンダーの説明内容を取得
 getEventById(id) CalendarEvent idにマッチする予定を取得
 getEventSeriesById(id) CalendarEventSeries idにマッチする定期開催予定を取得
 getEvents(start, end[, options]) CalendarEvent[] 条件の日時(startからend)にマッチするすべての予定を配列で取得
 getEventsForDay(date) CalendarEvent[] 指定日(date)のすべての予定を配列で取得
 getId() String カレンダーのIDを取得
 getName() String カレンダー名を取得
 getTimeZone() String カレンダーのタイムゾーンを取得
 isHidden() Boolean ユーザーのUI上で非表示になっているかどうか真偽値で取得
 isPrimaryCalendar() Boolean カレンダーがデフォルトに設定されているかどうか真偽値で取得
 isOwnedByMe() Boolean カレンダーのオーナーが自分かどうか真偽値で取得
 isSelected() Boolean ユーザーのUI上で表示されているか真偽値で取得
 setColor(color) Calendar カレンダーの色を設定
 setDescription Calendar カレンダーの説明内容をcolorに設定
 setHidden(hidden) Calendar ユーザーのUI上で非表示に設定
 setName(name) Calendar カレンダー名をnameに設定
 setSelected(selected) Calendar ユーザーのUI上で非表示を解除
 setTimeZone(timeZone) Calendar カレンダーのタイムゾーンをtimeZoneに設定
 unsubscribeFromCalendar() Void カレンダーの共有を解除

上記の通りカレンダー自体に対する操作と、カレンダーに紐づく予定(イベント)を作成するのメソッドがあります。

※実は、Calendarクラスにある、イベントの取得や作成など多くのメソッドは、CalendarAppクラスにもあります。ただし、CalendarAppクラスでのそれらのメソッドは、対象がデフォルトカレンダーになっていますので注意してください。Calendarクラスを利用するほうがより幅広いプログラムが作れると思います。

予定(イベント)を取得する

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

上の画像の10月28日に予め作った「作った予定1」を取得するサンプルプログラムです。

function test() {
  
  // カレンダーのID(IDはそれぞれ指定してください。)
  var calendarId = "*************@group.calendar.google.com"
  
  // カレンダーを取得する
  var calendar = CalendarApp.getCalendarById(calendarId)
  
  // 指定期間の予定の一覧を取得する
  var startDate = new Date("2020/10/01") // 取得期間開始日
  var endDate = new Date("2020/10/31")    // 取得期間終了日
  var events = calendar.getEvents(startDate, endDate) // 予定取得
  
  // ログに書き出す(予定のタイトルを一つずつ書き出す)
  events.forEach(function(event, i , array){
      Logger.log(event.getTitle()) // 作った予定1
  })
}

実行すると、ログに「作った予定1」と表示されます。

予定を取得する方法は、いくつかありますが、ここではgetEventsメソッドを使っています。

構文

Calendarオブジェクト.getEvents(start, end[, options])

取得したい日時の期間を指定できるメソッドです。

他にも、取得したい日を指定するgetEventsForDayメソッドなど色々あります。

構文

Calendarオブジェクト.getEventsForDay(date[, options])

オプションを指定することで、細かく条件を指定することが出来ます。

オプション説明
startinteger取得する開始位置
maxinteger取得する最大数
authorStringイベント作成者のメールアドレス
searchString指定したキーワードを含む予定を取得する

予定(イベント)を作成する

では、GASでカレンダーに予定を追加してみましょう。

予定を新しく追加する場合は、createEventメソッドを使います。

構文

Calendarオブジェクト.createEvent(title, start[,end, options])

function test() {
  
  // カレンダーのID(IDはそれぞれ指定してください。)
  var calendarId = "*************@group.calendar.google.com"
  
  // カレンダーを取得する
  var calendar = CalendarApp.getCalendarById(calendarId)
  
  // 新しく予定(イベント)を作成する
  var title = "作った予定2"
  var startTime = new Date("2020/10/28 12:00");
  var endTime = new Date("2020/10/28 13:00");
  var options = {
    description: "お金の計算2",
    location: "別荘"
  }
  calendar.createEvent(title, startTime, endTime, options)
  
  
  // 指定期間の予定の一覧を取得する
  var events = calendar.getEventsForDay(new Date("2020/10/28"))
  
  // ログに書き出す(予定のタイトルを一つずつ書き出す)
  events.forEach(function(event, i , array){
      Logger.log(event.getTitle()) // 作った予定1 作った予定2
  })
}

実行すると、ここで作られた「作った予定2」が追加されているので、「作った予定1」と「作った予定2」がログに表示されます。

引数のオプションの設定は以下のようになっています。

オプション説明
descriptionString予定の説明
locationString予定の場所
guestsStringゲストとして追加する、メールアドレスのカンマ区切りリスト
sendInvitesBoolean招待メールを送信するかどうか(デフォルト:false)

アプリから普通に、Googleカレンダーを作成するときに設定が出来る項目ですね。

スポンサーリンク

まとめ

Calendarクラスの紹介をしました。次回は、CalendarEventクラスについて紹介します!

コメント

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