Я уже много лет пользуюсь Гугл календарём и Гугл контактами и единственная вещь которая мне не нравится это отдельный календарь, который не отображает возраст, а показывает только сам факт дня рождения. Ещё в 2019 году я написал скрипт, который решает эту проблему, но прошло 3 года и с помощью одного из читателей Хабра мы добавили склонения слов на русском языке при обозначения возраста и ещё несколько технических функций.
А ещё обновили похожий скрипт для детей: это когда каждый месяц скрипт автоматически создаёт событие в Гугл календаре, в заголовке к которому указано сколько исполнилось годов и месяцев вашему малышу (работает с самого рождения, 0 лет), а в описании указан возраст (годы и месяцы) каждого из родителей. Я сам обычно не помню никакие даты и этот скрипт стал для меня настоящим спасением.
Что изменилось по сравнению с предыдущими версиями
1. Использование слов "лет" и "год".
1 -- год 2, 3, 4 -- года 5, 6, 7, 8, 9, 10, 11, 12, и все остальные "-надцать", а также 20 -- лет 21 -- год 22, 23, 24 -- года и т.д.
2. Понятные для новичков комментарии.
Даже если вы не особо разбираетесь в JavaScript, то по комментариям можно разобраться что и где надо править чтобы получить именно свою редакцию.
3. Добавлено логирование на Гугл диск в виде текстового файла.
Поскольку скрипт запускается один раз в месяц и в автоматическом режиме - всегда можно посмотреть текущий лог в течении месяца и понять что именно пошло не так, если, например, мероприятия не были созданы.
Отображение возраста контактов в Гугл календаре в день их рождения
![Google Calendar с напоминанием о дне рождения контакта Google Calendar с напоминанием о дне рождения контакта](https://habrastorage.org/getpro/habr/upload_files/7d3/fe7/9b8/7d3fe79b8c058ceaec3be984576af9ef.png)
Текущая редакция скрипта вставлена как фрагментов кода Gist GitHub. Чтобы удобно скопировать - нажмите кнопку view raw справа внизу:
Напоминалка о возрасте ребёнка
![Созданное событие в Google календаре Созданное событие в Google календаре](https://habrastorage.org/getpro/habr/upload_files/1d2/66a/e55/1d266ae550ba6b68614e8b4080380a7f.png)
Текущая редакция скрипта вставлена как фрагментов кода Gist GitHub. Чтобы удобно скопировать - нажмите кнопку view raw справа внизу:
Как пользоваться?
Для того, чтобы воспользоваться скриптом создайте новый скрипт через меню. Если у вас нет в меню такого пункта «Google Apps Script», то там же надо нажать «Подключить другие приложения» и в поиске найти «Google Apps Script» и подключить, тогда пункт в меню появится:
![Создание файла скрипта Создание файла скрипта](https://habrastorage.org/getpro/habr/upload_files/0c6/50a/823/0c650a823a690c20d12216a8fda010ee.png)
Скопируйте туда содержимое одного из примеров, я буду копировать отображение возраста контактов в Гугл календаре на день их рождения :
![Содержимое файла скрипта Содержимое файла скрипта](https://habrastorage.org/getpro/habr/upload_files/3c4/4c1/828/3c44c1828be2bcf43a179c3012db4731.png)
Тестово запустите функцию birthdayAgeToCalendar()
:
![Тестовый запуск Тестовый запуск](https://habrastorage.org/getpro/habr/upload_files/866/8ab/359/8668ab359a6e6d3a9b2b5920703283e7.png)
Теперь вам надо дать все необходимые разрешения, чтобы скрипт мог выполнять свою работу:
![Окно авторизации при первом запуске Окно авторизации при первом запуске](https://habrastorage.org/getpro/habr/upload_files/999/319/e1c/999319e1c911979ee93989a36bb35951.png)
Перейдите в дополнительные настройки и просмотрите все разрешения:
![Авторизация этого скрипта Авторизация этого скрипта](https://habrastorage.org/getpro/habr/upload_files/c8c/66b/012/c8c66b012ba5d388fe9cbb912f54efd4.png)
Приложение запрашивает следующие разрешения:
Просмотр, создание, изменение и удаление всех файлов на Google Диске.
Просмотр, изменение, скачивание и безвозвратное удаление ваших контактов.
Просмотр, изменение и безвозвратное удаление всех календарей, с которыми вы можете работать в Google Календаре, а также предоставление доступа к ним.
Работа приложения во время отсутствия пользователя.
Нажмите «Разрешить», для того, чтобы начать использовать скрипт. Вы в любое время можете посмотреть список выданных вами разрешений на специальной странице и в один клик их отозвать.
После получения разрешения появится окно журнала выполнения:
![Результат работы скрипта Результат работы скрипта](https://habrastorage.org/getpro/habr/upload_files/ae4/c92/30d/ae4c9230deac5808b0cdf07f4211c8f3.png)
Что в итоге?
В календаре появится запись о дне рождении, но только если в ближайшем месяце у вас обозначены дни рождения хотя бы у одного человека.
![Автоматически созданное событие Автоматически созданное событие](https://habrastorage.org/getpro/habr/upload_files/56b/c45/9d6/56bc459d6789300b2f027aa0b3ba732a.png)
Измените данные примера на свои собственные для возраста малыша
Для второго варианта кода после тестового запуска внесите свои даты в код и исправьте имена:
![Изменение данных и имён Изменение данных и имён](https://habrastorage.org/getpro/habr/upload_files/4f9/9a1/4f9/4f99a14f91eca4c229e18d849374f52e.png)
После этого выполните функцию TriggersCreateTimeDriven()
для того чтобы каждый раз 1го числа каждого месяца этот скрипт выполнялся автоматически, создавая событие в календаре на грядущий месяц.
После этого обязательно задайте offset
. Если день рождение ребёнка приходится на 9 число, то этот параметр равен 8. Этот параметр - сдвиг в расчётах нужен потому что все расчёты будут выполняться первого числа каждого месяца, а день рождения, например, 9 числа.
Вот и всё!
Вы справились!
Автоматические напоминалки созданы.
Актуальную версию всегда можно посмотреть на Гитхабе - empenoso/Google-Apps-Script.
Автор: Михаил Шардин,
18 августа 2022 г.
R7R
Это не баг, а фича.
Не следует помнить (а тем более — напоминать :) дамам об их возрасте.
(по моим данным, это становится актуальным сразу после 20 :)
Кроме того, всем пожилым людям не особо приятны напоминания об их возрасте (кое-кто и день рождения не отмечает по этой причине).
Так что «поздравляем с юбилеем!» (допустимо), а не «Поздравляем с 75 летием!» (не допустимо, так как тут же наводит юбиляра на мысли о скорой смерти)
empenoso Автор
Да я тоже согласен, что это скорее всего фича, но этот скрипт создаёт напоминание только для вас и не отправляет возраст другому человеку.
Дальше вы уже сами решаете, что делать с этой цифрой ????