Google Apps Scriptで簡単!カレンダーをコピーする方法

GASを使ってGoogleカレンダーのイベントを別のカレンダーにコピーしたいんだけど、どうすればいいかな…?
猫男
猫男
catman
catman
それならば、catmanが簡単なスクリプトを書いてあげよう。GoogleカレンダーのイベントをGASでコピーする方法は覚えると便利だ。

 

GASでGoogleカレンダーをコピーする方法

Google Apps Script(GAS)を使えば、Googleカレンダーの内容を別のカレンダーにコピーできるぞ。次のスクリプトを見てくれ。


function copyCalendarEvents() {
  const sourceCalendar = CalendarApp.getCalendarById('source-calendar-id');
  const destinationCalendar = CalendarApp.getCalendarById('destination-calendar-id');
  const events = sourceCalendar.getEvents(new Date('2023-01-01'), new Date('2023-12-31'));
  
  events.forEach(event => {
    destinationCalendar.createEvent(event.getTitle(),
                                    event.getStartTime(),
                                    event.getEndTime(),
                                    {description: event.getDescription()});
  });
}

まず sourceCalendar を使ってコピー元のカレンダーをIDで指定。

次に、destinationCalendar を使ってコピー先のカレンダーも同様にIDで取得するんだ。

その後、getEvents(start, end) を使って、指定した期間(この例では2023年1月1日から12月31日まで)に含まれるすべてのイベントを取得。

取得したイベントの配列に対して forEach() を使い、1件ずつ処理を繰り返すぞ。

それぞれのイベントについて、createEvent() メソッドを使用して、コピー先のカレンダーに新しいイベントを作成完了だ。

 

練習問題

指定日のGoogleカレンダーからイベントを取得し、タイトルに”Meeting”が含まれるイベントのみを新しいカレンダーにコピーするスクリプトを書いてみよう。

 

 

解答・解説


function copyMeetingEvents() {
  const sourceCalendar = CalendarApp.getCalendarById('source-calendar-id');
  const destinationCalendar = CalendarApp.getCalendarById('destination-calendar-id');
  const events = sourceCalendar.getEvents(new Date('2023-01-01'), new Date('2023-12-31'));
  
  events.forEach(event => {
    if (event.getTitle().includes('Meeting')) {
      destinationCalendar.createEvent(event.getTitle(),
                                      event.getStartTime(),
                                      event.getEndTime(),
                                      {description: event.getDescription()});
    }
  });
}

このスクリプトでは、Googleカレンダーからイベントを取得して、各イベントタイトルに”Meeting”が含まれているかチェックしている。

該当するイベントのみを新しいカレンダーにコピーする。

forEachは、イベントを一つ一つ処理するために使われる。条件に合致するイベントだけを取り扱うためにif文を活用している。