2ステップでわかる!GASでカレンダーをスプレッドシートに取得する方法
会社のプロジェクトでGASを使ってカレンダーからスプレッドシートに予定を取得しろと言われちゃったんだけど、どうすればいいんだろう…初めてで全然わからなくて。

猫男

catman
よし、そんな君にcatmanがGASでカレンダーの取得について教えよう。まずは基本を押さえることから始めようか。
GASでカレンダーをスプレッドシートに取得する方法
次の2ステップで攻略するぞ。
1. カレンダーの予定を取得する
CalendarAppを使用してカレンダーからイベントを取得しよう。。
function getCalendarEvents() {
var calendar = CalendarApp.getDefaultCalendar();
var events = calendar.getEvents(new Date(), new Date(new Date().setDate(new Date().getDate() + 7)));
events.forEach(function(event) {
Logger.log(event.getTitle());
});
}
CalendarApp.getDefaultCalendar() はデフォルトのカレンダーを取得するために使う。
getEvents() メソッドを使って指定した期間内のイベントを取得できる。
forEachメソッドで各イベントをループし、イベントのタイトルをログ出力さ。
2. データをスプレッドシートに書き込む
次は取得した予定をスプレッドシートに書き込むぞ。
function writeToSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var calendar = CalendarApp.getDefaultCalendar();
var events = calendar.getEvents(new Date(), new Date(new Date().setDate(new Date().getDate() + 7)));
sheet.clear();
events.forEach(function(event, i) {
sheet.getRange(i + 1, 1).setValue(event.getTitle());
sheet.getRange(i + 1, 2).setValue(event.getStartTime());
sheet.getRange(i + 1, 3).setValue(event.getEndTime());
});
}
SpreadsheetApp.getActiveSpreadsheet() は現在アクティブなスプレッドシートを取得するために使う。
getActiveSheet() メソッドで開いたシートを取得し、各イベントを行に格納。
setValue() メソッドを使うことで、セルに取得したイベントの情報を入れられる。
なんだか少しわかった気がする…でもまだ不安だな…もう少し練習しないと。

猫男

catman
大丈夫さ、次は練習問題をやってみよう。コードを試して実感してみるといい。
練習問題
Googleカレンダーから次の予定を取得し、スプレッドシートにその予定の件名、開始時刻、終了時刻、説明をそれぞれ1列ずつ書き込むGASスクリプトを作成しよう。
解答・解説
function writeDetailedEventsToSheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var calendar = CalendarApp.getDefaultCalendar();
var events = calendar.getEvents(new Date(), new Date(new Date().setDate(new Date().getDate() + 7)));
sheet.clear();
events.forEach(function(event, i) {
sheet.getRange(i + 1, 1).setValue(event.getTitle());
sheet.getRange(i + 1, 2).setValue(event.getStartTime());
sheet.getRange(i + 1, 3).setValue(event.getEndTime());
sheet.getRange(i + 1, 4).setValue(event.getDescription());
});
}
このスクリプトは、前に紹介したスクリプトの変形で、カレンダーのイベントに説明を加えてスプレッドシートに書き込むものだ。
イベントが持つメソッド getDescription() を使うことで、イベントの説明部分を取得し、スプレッドシートに記入している。
このようにGASを利用すれば、Googleカレンダーの詳細な情報をスプレッドシートにまとめるのは簡単だ。