После введения карантина многие команды так и остались работать удаленно. Поэтому они часто используют Google Календарь, планируя встречи и приглашая на них. Но как быть, если митинг, указанный в одном календаре, не отображаются как занятое время в другом? Лайфхаком и готовым скриптом делится Александр Максименюк, основатель и CVO Ringostat.
Недавно я в очередной раз столкнулся с тем, что встреча в одном календаре не отобразилась как занятое время в другом. В результате у меня было два приглашения на одно и то же время в двух календарях. Плюс, у меня есть личный календарь, который я тоже веду. И очень неудобно, когда тебе делают приглашение на время, когда ты записан к стоматологу.
Я пытался найти нормальное решение, чтобы коллеги видели во всех календарях, в какое время я занят. Но так ничего и не нашел, поэтому сделал такое решение сам. И хочу поделиться им с вами.
Скрипт и инструкция
Скачайте и скопируйте документ по ссылке. Для этого не нужно запрашивать доступ. Дайте документу понятное название, чтобы вам было легко его потом найти.
Так выглядит таблица по умолчанию
Выберите основной календарь, в который нужно будет добавлять занятые слоты. Ему должны быть открыты доступы ко всем остальным календарям. Как это сделать, описано в справке Google.
ВАЖНО: выполнять скрипт нужно будет под пользователем, у которого в календаре Google будут добавлены все остальные нужные календари.
- В колонку A добавляем все календари, из которых нужно будет тянуть статус «Занято».
- В колонку B добавляем календари, куда вносить слоты «Занято».
- В колонке C задаем, на сколько дней вперед «смотреть».
- Нажимаем на кнопку “Test run” — и даем разрешения. Т. к. это простой скрипт, Google еще будет «ругаться», что это небезопасно. Просто нажмите эту ссылку:
- Смотрим в календарь, у событий должны появиться «двойники»:
- Нажимаем на кнопку “Create trigger” — и скрипт будет выполняться каждый час.
Что под капотом
Скрипт проходится по календарям, «выгребает» все события, кроме тех, где в названии есть “Busy from” или по которым есть отказ от участия. И создает в нужных календарях неинформативное событие, просто чтобы было отражено — в это время пользователь занят. Если к календарю есть доступ, то автоматически придет отказ или же это отразится для расшаренного календаря.
Триггер раз в час проверяет будущие события. И для всех встреч, у которых еще нет соответствующего «двойника», создает его. Второй триггер сносит все дубли раз в 12 часов и создает заново, чтобы убрать дубли по отмененным задачам. Дубли создаются без уведомлений.
Возникли вопросы по работе скрипта? Задайте их нам в комментариях.