こんにちは、ばばーるです。
今回はグーグルカレンダー情報を取得する方法についてご紹介します。
カレンダーを取得
特定のグーグルカレンダーにアクセスする前に自分が利用しているカレンダーを確認しましょう。
getDefaultCalendar: ユーザーのグーグルIDのカレンダーを取得します。結果はGmailのアドレスが表示されます。
function myFunction() {
const Calendar = CalendarApp.getDefaultCalendar();
console.log(Calendar.getName());
}
getAllCalendars: ユーザーが作成した、または使用しているすべてのカレンダーを取得します。スクリプトでカレンダーの一覧を取得します。
function myFunction() {
const calendars = CalendarApp.getAllCalendars();
for (let i = 0; i < calendars.length; i++) {
let calendarName = calendars[i].getName();
console.log(calendarName);
}
}

getAllOwnedCalendars:ユーザーが作成した全てのカレンダーを取得します。
function myFunction() {
const calendars = CalendarApp.getAllOwnedCalendars();
for (let i = 0; i < calendars.length; i++) {
let calendarName = calendars[i].getName();
console.log(calendarName);
}
}
先ほどのカレンダーの”Holidays in Japan”と”誕生日”以外の、自分で作成したカレンダーだけがログ出力されます。

getCalendarById(id): IDからカレンダーを取得します。グーグルカレンダーもスプレッドシートやドライブのようにIDで特定のカレンダーにアクセスできます。
まずはグーグルカレンダーからカレンダーIDにアクセスしましょう。アクセスしたいカレンダーの横の:をクリックします。

さらに”設定”をクリックします。

設定を開くと下の方にカレンダーIDが表示されています。

(カレンダーの名前がHolidays in Japanではなくて、日本の祝日となっている場合は”ja.japanese#holiday@group.v.calendar.google.com”をご使用ください。)
カレンダーIDをしたのスクリプトにコピペして、取得できてるかどうか確認しましょう。
function myFunction() {
const jpCalendarID = 'en.japanese#holiday@group.v.calendar.google.com';
const jpCalendar = CalendarApp.getCalendarById(jpCalendarID);
console.log(jpCalendar.getName());
}
ログ出力を確認すると…

取得されました。
getCalendarsByName(name): カレンダー名からも、所有または使用しているカレンダーを取得しできます。(名前では大文字と小文字は区別されません。)
function myFunction() {
const jpCalendarName = 'Holidays in Japan';
const jpCalendar = CalendarApp.getCalendarsByName(jpCalendarName);
console.log('Found %s matching calendars.', jpCalendar.length);
}

カレンダーを確認できました。
イベントを取得
カレンダーのアクセス方法を理解した後はカレンダー内のイベントにアクセスしましょう。
例えば、このようなイベントがカレンダーに載っていたとします。

getEvents(startTime, endTime): 指定された時間範囲内のイベントを取得します。(タイムゾーンが指定されていない場合、時間値はスクリプトのタイムゾーンで解釈されます。)
function myFunction() {
const startTime = new Date('2020/12/27');
const endTime = new Date('2021/1/2');
const events = CalendarApp.getDefaultCalendar().getEvents(startTime, endTime);
console.log(events.length);
}
Meetingが3回、ブログが3回の計6回のイベントの結果がログ出力されています。

getEventsForDay(date): dateの日のイベントを取得します。
function myFunction() {
const date = new Date('2020/12/29');
const events = CalendarApp.getDefaultCalendar().getEventsForDay(date);
console.log(events.length);
}

12月29日のイベント数2がログ出力されています。
まとめ
今回はグーグルカレンダー情報を取得する方法についてご紹介しました。
- getDefaultCalendar: ユーザーのグーグルIDのカレンダーを取得する
- getAllCalendars: ユーザーが作成した、または使用しているすべてのカレンダーを取得する
- getAllOwnedCalendars:ユーザーが作成した全てのカレンダーを取得する
- getCalendarById(id): IDからカレンダーを取得する
- カレンダーIDは設定から取得できる
- getEvents(startTime, endTime): 指定された時間範囲内のイベントを取得する
- getEventsForDay(date): dateの日のイベントを取得する