Google Apps Scriptでカレンダーのイベント色を取得・変更する方法

Googleカレンダーのイベントの色をGASで取得や変更できたらいいなぁ…でもどうやって?
猫男
猫男
catman
catman
よし、catmanが「GASでカレンダーのイベント色を取得・変更する方法」を教えてやろう!

GASを使ったカレンダーのイベント色の取得方法

GASを活用することで、Googleカレンダーのイベント色を簡単に取得することができる。まずはその取得方法について説明しよう。

イベント情報を取得する基本的なスクリプト

イベント情報を取得するには、まずカレンダーIDを指定して、そのカレンダー内のイベントを取得しよう。


 function getEventColors() {
   const calendar = CalendarApp.getCalendarById('your-calendar-id@example.com');
   const events = calendar.getEvents(new Date(), new Date(new Date().setMonth(new Date().getMonth() + 1)));
   
   events.forEach(event => {
     Logger.log('Event: ' + event.getTitle() + ', Color: ' + event.getColor());
   });
 }

ここでは、特定のカレンダーIDに基づき、1か月間のイベントを取得して、その色をログに表示している。

getColorメソッドを使った色取得の解説

イベントオブジェクトのgetColorメソッドを使うことで、そのイベントの色を取得可能だ。

カレンダーのタイトルとともに色を出力するので、イベントの管理に役立つね。

GASを使ってカレンダーのイベント色を変更する方法

次に、取得したイベントの色を変更する方法を見ていこう。

イベント色を変更するスクリプト

イベントの色を変更するには、setColorメソッドを使用する。


 function changeEventColors() {
   const calendar = CalendarApp.getCalendarById('your-calendar-id@example.com');
   const events = calendar.getEvents(new Date(), new Date(new Date().setMonth(new Date().getMonth() + 1)));
   
   events.forEach(event => {
     event.setColor(CalendarApp.EventColor.PALE_BLUE);
     Logger.log('Changed color of Event: ' + event.getTitle());
   });
 }

このスクリプトでは、各イベントの色をPALE_BLUEに変えています。

setColorメソッドの使い方解説

setColorメソッドでCalendarApp.EventColorに定義されている色を指定し、変更を実行する。

こうすることで、特定の基準に合わせてイベントを色分けすることが可能になる。

練習問題

GASを利用して以下の課題に取り組んでみよう。

  • 特定の日にちのイベントのみを取得して、それぞれの色を表示してみてください。
  • イベントの色をPALE_BLUE以外の色に変更してみましょう。

解答・解説

下記のスクリプトで特定の日付のイベント色を取得し、別の色に変更できる。


 function specificDateEventColors() {
   const calendar = CalendarApp.getCalendarById('your-calendar-id@example.com');
   const specificDate = new Date(2023, 10, 15); // 取得したい日の指定(例:2023年11月15日)
   const events = calendar.getEventsForDay(specificDate);
   
   events.forEach(event => {
     Logger.log('Event on specific date: ' + event.getTitle() + ', Color: ' + event.getColor());
     event.setColor(CalendarApp.EventColor.MAUVE);
     Logger.log('Changed color to MAUVE for Event: ' + event.getTitle());
   });
 }

getEventsForDayメソッドで指定の日付のイベントを取得。

イベント色を変更したい場合は、setColorメソッドを使い、異なるEventColorを指定する。