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

С этим скриптом вам не придётся помнить даты, а ещё вам придёт оповещение стандартными средствами гугл календаря. Вот результат работы этого скрипта:

Созданное событие в Calendar with Google
Созданное событие в Calendar with Google

Перед вами улучшенная версия моего скрипта, который впервые был опубликован ещё в 2019 году на гитхабе. Вот его текущая редакция:

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

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

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

Скопируйте туда содержимое примера:

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

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

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

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

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

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

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

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

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

  • Подключение к внешнему сервису

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

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

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

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

Что в итоге?

В календаре появится созданная тестовая запись через 9 дней (это значение offset) от текущей даты:

Автоматически созданная запись
Автоматически созданная запись

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

После того, как всё заработало, просто внесите свои даты в код и исправьте имена:

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

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

Автопостановка триггера на исполнение
Автопостановка триггера на исполнение

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

Задание сдвига - ведь скрипт будет работать 1го числа, а ДР может быть в любой день месяца
Задание сдвига - ведь скрипт будет работать 1го числа, а ДР может быть в любой день месяца

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

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

18 января 2022 г.

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


  1. sarhome
    18.01.2022 10:47
    +1

    const child1Birthday = '2017-03-07'
        var child1FullYears = ~~(moment(now).diff(child1Birthday, 'months', false) / 12)
        childText = `Петя родился ${child1FullYears} года и ${moment().diff(child1Birthday, 'months', false)-child1FullYears*12} месяцев назад.`
    const child2Birthday = '2019-03-01'
        var child2FullYears = ~~(moment(now).diff(child2Birthday, 'months', false) / 12)
        childText = `Катя родилась ${child2FullYears} года и ${moment().diff(child2Birthday, 'months', false)-child2FullYears*12} месяцев назад.`  
      var title = `Петру сегодня исполняется ${child1FullYears} года и ${moment().diff(child1Birthday, 'months', false)-child1FullYears*12} месяцев`;
      var title = `Екатерине сегодня исполняется ${child2FullYears} года и ${moment().diff(child2Birthday, 'months', false)-child2FullYears*12} месяцев`;

    Если два ребенка, я все правильно сделал?


    1. empenoso Автор
      18.01.2022 11:45

      С компьютера посмотрю.


    1. empenoso Автор
      18.01.2022 14:50

      title только одно может быть - надо объединить.


  1. benipaz
    18.01.2022 11:04
    +2

    скрипт интересный, но...

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


    1. empenoso Автор
      18.01.2022 11:45
      +1

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


      1. benipaz
        18.01.2022 12:01
        +1

        да, это минус, с которым и я столкнулся. если очень надо знать возраст, то добавляю год рождения.


        1. empenoso Автор
          18.01.2022 14:48
          +2

          Вообще для себя я эту проблему уже решил: Дни рождения в Google Календаре с обозначением возраста (другая моя статья).


  1. Svibrager
    18.01.2022 11:15
    +2

    Это просто праздник какой-то! Кроме Офисного пакета, поддерживающего VBA, мало где можно встретить такую заботу о пользователе.

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


    1. empenoso Автор
      18.01.2022 11:27

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