🗓️
【GAS】Googleカレンダーの勤務地を取得する方法
はじめに: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
)としていますが、お好みでカスタマイズしてください。
おわりに
通常の予定なら簡単に取得できるのに、勤務地となるといきなり難しくなって、割と苦労しました…
同じように困った人の助けになれば幸いです。
参考
Discussion