Я уже много лет пользуюсь Гугл календарём и Гугл контактами и единственная вещь которая мне не нравится это отдельный календарь, который не отображает возраст, а показывает только сам факт дня рождения. Ещё в 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 с напоминанием о дне рождения контакта

Текущая редакция скрипта вставлена как фрагментов кода Gist GitHub. Чтобы удобно скопировать - нажмите кнопку view raw справа внизу:

Напоминалка о возрасте ребёнка

Созданное событие в Google календаре
Созданное событие в Google календаре

Текущая редакция скрипта вставлена как фрагментов кода Gist GitHub. Чтобы удобно скопировать - нажмите кнопку view raw справа внизу:

Как пользоваться?

Для того, чтобы воспользоваться скриптом создайте новый скрипт через меню. Если у вас нет в меню такого пункта «Google Apps Script», то там же надо нажать «Подключить другие приложения» и в поиске найти «Google Apps Script» и подключить, тогда пункт в меню появится:

Создание файла скрипта
Создание файла скрипта

Скопируйте туда содержимое одного из примеров, я буду копировать отображение возраста контактов в Гугл календаре на день их рождения :

Содержимое файла скрипта
Содержимое файла скрипта

Тестово запустите функцию birthdayAgeToCalendar():

Тестовый запуск
Тестовый запуск

Теперь вам надо дать все необходимые разрешения, чтобы скрипт мог выполнять свою работу:

Окно авторизации при первом запуске
Окно авторизации при первом запуске

Перейдите в дополнительные настройки и просмотрите все разрешения:

Авторизация этого скрипта
Авторизация этого скрипта

Приложение запрашивает следующие разрешения:

  • Просмотр, создание, изменение и удаление всех файлов на Google Диске.

  • Просмотр, изменение, скачивание и безвозвратное удаление ваших контактов.

  • Просмотр, изменение и безвозвратное удаление всех календарей, с которыми вы можете работать в Google Календаре, а также предоставление доступа к ним.

  • Работа приложения во время отсутствия пользователя.

Нажмите «Разрешить», для того, чтобы начать использовать скрипт. Вы в любое время можете посмотреть список выданных вами разрешений на специальной странице и в один клик их отозвать.

После получения разрешения появится окно журнала выполнения:

Результат работы скрипта
Результат работы скрипта

Что в итоге?

В календаре появится запись о дне рождении, но только если в ближайшем месяце у вас обозначены дни рождения хотя бы у одного человека.

Автоматически созданное событие
Автоматически созданное событие

Измените данные примера на свои собственные для возраста малыша

Для второго варианта кода после тестового запуска внесите свои даты в код и исправьте имена:

Изменение данных и имён
Изменение данных и имён

После этого выполните функцию TriggersCreateTimeDriven() для того чтобы каждый раз 1го числа каждого месяца этот скрипт выполнялся автоматически, создавая событие в календаре на грядущий месяц.

После этого обязательно задайте offset. Если день рождение ребёнка приходится на 9 число, то этот параметр равен 8. Этот параметр - сдвиг в расчётах нужен потому что все расчёты будут выполняться первого числа каждого месяца, а день рождения, например, 9 числа.

Вот и всё!
Вы справились!
Автоматические напоминалки созданы.

Актуальную версию всегда можно посмотреть на Гитхабе  - empenoso/Google-Apps-Script.

Автор: Михаил Шардин,

18 августа 2022 г.

Комментарии (2)


  1. R7R
    18.08.2022 13:54
    +1

    календарь, который не отображает возраст, а показывает только сам факт дня рождения.


    Это не баг, а фича.
    Не следует помнить (а тем более — напоминать :) дамам об их возрасте.
    (по моим данным, это становится актуальным сразу после 20 :)

    Кроме того, всем пожилым людям не особо приятны напоминания об их возрасте (кое-кто и день рождения не отмечает по этой причине).

    Так что «поздравляем с юбилеем!» (допустимо), а не «Поздравляем с 75 летием!» (не допустимо, так как тут же наводит юбиляра на мысли о скорой смерти)


    1. empenoso Автор
      18.08.2022 13:59

      Да я тоже согласен, что это скорее всего фича, но этот скрипт создаёт напоминание только для вас и не отправляет возраст другому человеку.

      Дальше вы уже сами решаете, что делать с этой цифрой ????