Google Apps Scriptで簡単!カレンダーをコピーする方法
GASを使ってGoogleカレンダーのイベントを別のカレンダーにコピーしたいんだけど、どうすればいいかな…?

猫男

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文を活用している。