3分でわかる!GASで他人のカレンダーを取得する方法

GASで他人のカレンダーを取得したいんだけど、どうすればいいんだろう?手順を知ってる人いないかな…。
猫男
猫男
catman
catman
よし、catmanが「GASで他人のカレンダーを取得する方法」について教えてやろう。必要な手順とスクリプトを解説しよう。

他人のカレンダーを取得するGASスクリプト

次のGASのスクリプトを書けば、他人のカレンダーをアクセスできるさ。

 function listOtherCalendarEvents() {
  const calendarId = 'example@example.com'; // 取得したいカレンダーのID
  const calendar = CalendarApp.getCalendarById(calendarId);
  const events = calendar.getEvents(new Date('2023-10-01'), new Date('2023-11-01'));
  
  events.forEach(event => {
    Logger.log('Event: ' + event.getTitle());
  });
}

このスクリプトでは、「getCalendarById」メソッドを使ってリクエストしたカレンダーを取得する。

その後、「getEvents」メソッドで特定の日付範囲内のイベントを抜き出して表示さできるだろう。

 

GASで他人のカレンダーを取得する際の注意点

えっ、カレンダーを取得できなかったって?

言い忘れていたが、GASで他人のカレンダーにアクセスするためには次の設定が必要だ。

それは、

相手が自分にカレンダー共有していること

だ。カレンダーの持ち主が、自分(GASの実行ユーザー)に「閲覧権限」以上のアクセスを許可している必要があるんだ。

共有方法は、

Googleカレンダー → [設定と共有] → [特定のユーザーと共有] → 自分のGmailアドレスを追加

だ。明日、持ち主に懇願しよう。

 

練習問題

次のスクリプトを完成させ、特定のカレンダーから過去一週間のイベントをリストアップするプログラムを作成しよう。

 function listEventsWeek() {
  const calendarId = '_____'; // ここに自分の取得したいカレンダーのIDを入れる
  const calendar = _____;
  const now = new Date();
  const oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); // 過去7日
  
  const events = _____;
  
  events.forEach(event => {
    Logger.log('Event: ' + event.getTitle());
  });
}

 

解答・解説

以下が問題の解答例だ。

 function listEventsWeek() {
  const calendarId = 'example@example.com'; // 取得したいカレンダーのID
  const calendar = CalendarApp.getCalendarById(calendarId);
  const now = new Date();
  const oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); // 過去7日
  
  const events = calendar.getEvents(oneWeekAgo, now);
  
  events.forEach(event => {
    Logger.log('Event: ' + event.getTitle());
  });
}

ここでは「getCalendarById」を用い、指定したカレンダーを取得する。

日付範囲は「oneWeekAgo」を用いることで、過去一週間分のイベントを取得してリストアップできる。

 

catman
catman
しっかりやってみてくれよな。他人のカレンダーの情報を取得できれば、プロジェクトのスケジュール管理なんかも楽々こなせるさ。