🗓️

【GAS】Googleカレンダーの勤務地を取得する方法

2025/01/28に公開

はじめに:Googleカレンダーの勤務地は取得しづらい

私の会社では、リモートワーク解禁に伴い、Googleカレンダーに勤務地を入れることがルール化されました。

メンバーの勤務地をまとめるべく、GASで取得しようとしたら、全然うまくできませんでした。

工夫しながら、勤務地を取得できるコードが書けたので紹介です。

この記事の対象者

  • GAS初心者の方
  • GASでの勤務地取得に苦労している方
  • Googleカレンダーの勤務地を使っている方

コードを使うための準備

勤務地を取得するためにはGoogle Calendar APIの導入が必要です。

サービスを追加からGoogle Calendar APIのv3を選んでください。

コード紹介

例として「今日から7日間の勤務地を取得するコード」を紹介します。

function extractWorkingLocation() {
  //GAS実行者のアドレス取得
  const calendarId = Session.getActiveUser().getEmail();

  //現在の時間を取得
  let now = new Date();
  const y = now.getFullYear();
  const m = now.getMonth();
  const d = now.getDate();

  //今日と7日後の00:00を作成
  const today = new Date(y, m, d, 0, 0, 0);
  const endDate = new Date(y, m, d + 7, 0, 0, 0);

  //期間内のカレンダーイベント取得
  const events = Calendar.Events.list(calendarId, {
    eventTypes: 'workingLocation',
    timeMin: today.toISOString(),
    timeMax: endDate.toISOString(),
  });

  //JSONにととのえる
  const jsonEvens = JSON.parse(events);

  //名前、働く場所、日付をinfoにまとめる
  let workingInfo = [];
  jsonEvens.items.forEach(event => {
    const obj = {}
    obj.name = event.creator.displayName;
    obj.location = event.summary;

    let date = new Date(event.start.date);
    date.setHours(0, 0, 0, 0);
    obj.date = date
    workingInfo.push(obj);
  });

  //日付の順にソート
  workingInfo.sort((a, b) => new Date(a.date) - new Date(b.date));
  console.log('workingInfo', workingInfo);
}

コードを実行した人の勤務地がオブジェクトで取得できます。

オブジェクトの中身は、表示名(name)、勤務地(location)、日付(date)としていますが、お好みでカスタマイズしてください。

おわりに

通常の予定なら簡単に取得できるのに、勤務地となるといきなり難しくなって、割と苦労しました…

同じように困った人の助けになれば幸いです。

参考

https://developers.google.com/apps-script/advanced/calendar?hl=ja

Discussion