Googleカレンダーを操作するCalendarサービス
Calendarサービス
Calandarサービスは、GASでGoogleカレンダーを操作するときに使うクラスとメンバーがまとめられています。Googleカレンダーに登録されたイベントの情報を取得したり、イベントを追加したり削除したりなどの操作が行えます。
Calendarサービスの主なクラス
クラス | 説明 |
CalendarApp | Calendarサービスのグローバルオブジェクト |
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]) | CalendarEventSeries | recurrenceで日付(start)から定期開催される終日予定を作成 |
createEvent(title, start[,end, options]) | CalendarEvent | 期間(start)から期間(end)で予定(title)を作成 |
createEventFromDescription(description) | CalendarEvent | 文章から判断して新しい予定を作成 |
createEventSeries(title, start, end, recurrence[, options]) | CalendarEventSeries | recurrenceで定期開催される期間(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メソッドを使っています。
取得したい日時の期間を指定できるメソッドです。
他にも、取得したい日を指定するgetEventsForDayメソッドなど色々あります。
オプションを指定することで、細かく条件を指定することが出来ます。
オプション | 型 | 説明 |
start | integer | 取得する開始位置 |
max | integer | 取得する最大数 |
author | String | イベント作成者のメールアドレス |
search | String | 指定したキーワードを含む予定を取得する |
予定(イベント)を作成する
では、GASでカレンダーに予定を追加してみましょう。
予定を新しく追加する場合は、createEventメソッドを使います。
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」がログに表示されます。
引数のオプションの設定は以下のようになっています。
オプション | 型 | 説明 |
description | String | 予定の説明 |
location | String | 予定の場所 |
guests | String | ゲストとして追加する、メールアドレスのカンマ区切りリスト |
sendInvites | Boolean | 招待メールを送信するかどうか(デフォルト:false) |
アプリから普通に、Googleカレンダーを作成するときに設定が出来る項目ですね。
まとめ
Calendarクラスの紹介をしました。次回は、CalendarEventクラスについて紹介します!
コメント