2ステップでわかる!GASでカレンダーをスプレッドシートに取得する方法

会社のプロジェクトでGASを使ってカレンダーからスプレッドシートに予定を取得しろと言われちゃったんだけど、どうすればいいんだろう…初めてで全然わからなくて。
猫男
猫男
catman
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
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カレンダーの詳細な情報をスプレッドシートにまとめるのは簡単だ。