🍊

Google カレンダーの社外の人がいる予定と外出しなきゃいけなさそうな予定にそれぞれラベル付ける

2022/09/11に公開

元ネタ

ラベルって

「Google カレンダー」で予定にラベルを付けて分類・分析可能に

対象となるのは「Google Workspace」のうち、Business Standard/Business Plus/Enterprise Standard/Enterprise Plus/Education Plus/Nonprofit プランのユーザーのみ。これ以外の「Google Workspace」プランと従来の「G Suite」Basic/Business のユーザー、個人向けの Google アカウントを持つユーザーは対象外となる。

なるほど、個人は使えない。

仕様にも set* で Label っぽいのはない。うらやま。

色をつけてみる

// Compiled using gas 1.0.0 (TypeScript 4.8.3)
'use strict';
const main = () => {
  const calendars = CalendarApp.getAllOwnedCalendars();
  const start = new Date();
  const end = new Date(
    start.getFullYear(),
    start.getMonth(),
    start.getDate() + 7,
  );
  calendars.forEach((calendar) => processCalendar(calendar, start, end));
};
const processCalendar = (calendar, start, end) =>
  calendar.getEvents(start, end).forEach((e) => setColour(e));
const setColour = (calendarEvent) => {
  const colour = whichcolour(calendarEvent);
  calendarEvent.setColor(colour);
};
const whichcolour = (calendarEvent) => {
  const r = isOffline(calendarEvent);
  const b = hasForeigner(calendarEvent);
  if (r && b) return '3';
  if (r) return '4';
  if (b) return '1';
  return '7';
};
const hasForeigner = (calendarEvent) =>
  calendarEvent.getGuestList().some((e) => isForeigner(e));
const isForeigner = (eventGuest) => {
  const mail = eventGuest.getEmail();
  const internalDomain = 'co';
  return !mail.endsWith(internalDomain);
};
const isOffline = (calendarEvent) => {
  const location = calendarEvent.getLocation();
  return location !== '';
};
const setTrigger = () =>
  ScriptApp.newTrigger('main').timeBased().everyDays(1).create();

みたかんじ

色はつく。
まあでも、ラベルみたいにキャプションないし、分析もできないので微妙ではある。

calendarColourize.png

そもそも弊社は Outlook で外から予定見れない(社内の ID を自分のデバイスに連携させてない)ので、関係なかったりする。直近の予定が把握したいよー

GitHubで編集を提案

Discussion