Как создать календарь в notion
Перейти к содержимому

Как создать календарь в notion

  • автор:

Как настроить удобную синхронизацию между Notion и календарем через ICS на JS без сервера

Уже почти 2 года я активно использую Notion в своей жизни. Я регулярно пополняю его своими личными автоматизациями, которые облегчают жизнь мне и моей команде. Иногда я публикую в своем блоге разные кейсы, которые удается оформить в виде библиотеки или примера кода. Данный пост также доступен в формате видео на моем канале.

Сегодня я решил поделиться тем, как я интегрировал календарь из Notion в Google Calendar через ics. Таким способом события из календаря Notion можно добавить в любой календарь, поддерживающий ics формат (то есть, практически, любой)

Немного предыстории

Обычно необходимость и суть любой интеграции и/или автоматизации проще понять, если понять зачем именно она была создана. Если хотите перейти, без предысторий, сразу к технике, листайте вниз до заголовка «Реализация».

Сейчас процесс общения с новыми запросами ко мне или моей компании происходит через моего Telegram бота или помощника. Но так оно работает только последний год…

Как оно работало раньше

Запрос может быть любой — могут начать предлагать какие-то “прорывные маркетинговые” услуги моей компании, обратиться ко мне за платными консультациями, предложить выступить на какой-нибудь конференции и тд.

Я старался вносить все в свой гугл-календарь. Ключевое слово — старался. Иногда меня даже хватало на целую неделю стабильных побед над моей ленью в этом вопросе. Поражение в этой схватке заканчивались накладками в созвонах и потерей репутации.

Мне достаточно быстро надоело обрабатывать подобное самому. В итоге начал приводить это в порядок. Среди наших клиентов есть серьезные люди, у которых есть помощники и все они, как один, ведут их календарь со всеми встречами и созвонами. Решил не придумывать велосипед и сделать тоже самое.

Причем я сразу решил идти не по пути предоставления доступа к гугл-календарю. Я хотел, чтобы я мог подвязывать свои задачи и заметки из моего Notion. Поэтому созвоны я решил хранить там же. Я создал базу в Notion с представлением (view) “календарь” и дал к нему доступ на внесение изменений.

В момент, когда приходит понимание, что необходимо устроить созвон создается (мной, ботом или помощником) сущность в Notion. Как велась моя база созвонов в мае 2022:

  1. Указывается дата и время созвона;
  2. В название, обычно, пишется имя фамилия человека и компании для идентификации в будущем;
  3. В поле Info добавляется информация, необходимая для отображения внутри уведомления в Telegram боте. Обычно тут краткое описание о чем планируется разговор;
  4. В тело уже размещается информация любого рода. Обычно помощник, после созвона, пишет расшифровки, договоренности и детали, которые могут быть полезны в будущем.
Желаемый функционал

Меня все устраивало кроме того, что для просмотра всех созвонов было необходимо идти в notion и смотреть что у меня по планам на следующий день. Приложение Notion на Android работает крайне медленно и я решил сделать так, чтобы все созвоны появлялись внутри моего гугл календаря, который я вел и веду по своим личным делам.

То есть хотелось, чтобы я/бот/помощник вносил информацию только в Notion и чтобы только Notion был единым источником информации для всех. Что еще более важно — люди достаточно переменчивы и, иногда, звонки переносятся еще до начала. Важно, чтобы можно было подвинуть карточку в Notion и все встало на свои места.

Реализация

Первое что мне пришло в голову для реализации функционала — отправлять события через Google Calendar Api. Я даже успел прочитать их Api Reference и примерно накидать идею как создавать события и отслеживать их синхронизацию. Следующим этапом были разборки с источником данных — я принялся смотреть что умеет Notion Api и был расстроен.

Сложности на стороне Notion

Работа с Notion происходит только через request-response подход. То есть нам, для получения информации и обновлений, нужно каждый раз забирать к себе всю информацию и уже, на своей стороне, понимать что поменялось, а что нет и реагировать на изменения.

Процесс актуализации пришлось бы делать следующим образом:

  • Нужно проходить по всем элементам базы созвонов и искать изменения;
  • Если добавили поле, то надо будет делать на N раз больше проверок (N – количество созвонов в базе);
  • Со временем база созвонов растет (1-2 созвона в день) = время обработки тоже ;
  • Достаточно тяжело поддерживать стабильную работу.

К великому сожалению, на момент написания поста, Notion совсем совсем не умеет в webhook. В идеале было бы подписаться на какие-то обновления и чтобы Notion оповещал наш сервер о каждом изменении на своей стороне.

Webhook — достаточно распостраненная практика в мире CRM и прочих сервисов, но Notion пока ее не освоил (на момент написания данного поста). Надеюсь, что скоро такой функционал порадует разработчиков. Ну а пока пришлось решить задачу чуть более лакончино

Найденное решение. Генерация ics на nodejs

В общем я посмотрел на этот предстоящий челлендж с API и оставил эту идею до лучших времен, которые наступили через пару месяцев. Я понял, что я могу экспортировать все элементы из Notion в ics, отдавать это через express и сразу же импортировать в Google Calendar как сторонний календарь.

Прежде всего необходимо получить notion token. Долго на этом останавливаться не буду т.к. описывал это в своем блоге. После получения токена нужно создать базу данных с Calendar View — можно взять мой шаблон. После создания базы фиксируем database_id из ссылки. Им заканчивается ссылка перед началом query_string (перед знаком вопроса).

Получение данных из Notion

Дальше приходим непосредственно к реализации. Внутри кода используются переменные notionToken и calendarDb — это как раз токен и id базы данных соответственно.

const notion = new Client(< auth: notionToken, >); const Events = await notion.databases.query(< database_id: calendarDb, >); 

Из notion приходит объект, содержащий все элементы из этой базы данных. Нам для заполнения гугл-календаря нужны следующие поля:

  • Event.properties[‘Name’][‘title’][0]?.[‘text’][‘content’] — название события
  • Event.properties[‘Info’][‘rich_text’][0]?.[‘text’][‘content’] — краткое описание события
  • Event.properties[‘Date’] — собственно дата события.

С полем даты события есть некоторые особенности:

  • Есть поля start и end.
  • Если не задать end то в нем будет null
  • Если поставить, в интерфейсе Notion, флажок “Include time” то формат даты изменится, но будет писаться в то же поле — надо смотреть на длину этого поля и тогда можно понять включено ли время.
  • Если у нас включено время, то end также может быть пустым и, следовательно, надо ко времени начала добавлять час если не указано время окончания.

Все эти кейсы ничего сложного из себя не представляют, но они познаются “в беде”. То есть сначала настроил систему только для работы с днями, запустил и оставил. Проходит время и случайно в одном месте ставишь дату со временем и все — система сломалась. Я все эти кейсы обработал. Получилось достаточно костыльно, но задачу поставленную решает.

Формирование ICS

После получения массива объектов из Notion их необходимо привести к формату, который можно конвертировать в ics. Само формирование ics строки реализовано в одноименном npm пакете.

Получить ics из массива событий можно следующим образом:

const icsEvent = ics.createEvents(Events) if (icsEvent.error) < console.error(icsEvent.error) return >icsEvent.value // конечная ics строка 

Массив Events представляет собой массив из следующих элементов:

const Events = [ < title: "Title", description: "Короткое описание из info", start: [2022,10,10,12,00], end: [2022,10,10,13,00], url: "ссылка на элемент в notion" >]; 

Дальше уже дело техники: передать эту строчку в express (или любой другой http) сервер и передать ссылку в Google Calendar

После чего Google Calendar сам зайдет по ссылке, выкачает все события и добавит их в мой календарь. Все работает более чем стабильно и события появляются в календаре не более чем через 10 минут после добавления в Notion.

Если я, вдруг, чего-то поменяю в одном событии, то, при следующей закачке, вся информация актуализируется и в календаре.

Чтобы не держать сервер под такую мелочь я разместил этот простой скрипт на pipedream. Можете брать к себе, в env переменных указывать свои токен и id базы данных и добавлять в календарь ссылку.

Также сделал небольшой npm пакет, где все «костылизации» с датами спрятал в одном методе createIcsString , который на вход принимает токен и id базы данных (примеры оформил отдельно).

  • JavaScript
  • Управление проектами
  • Управление продуктом
  • Лайфхаки для гиков

Редакционный календарь и другие полезные шаблоны Notion

Я уже все уши прожужжал вам моим любимым Notion, но ребята запилили галерею шаблонов и вот несколько полезных.

Подписывайтесь на наш телеграм-канал «Паша и его прокрастинация», там больше ништяков и полезностей.

Редакционный календарь

План публикаций в виде календаря

Список можно просматривать в виде календаря, таблицы или борда (как в Трелло).

Заметки и черновики

Хаб заметок

Шаблон для тех, кто хочет использовать Notion как сервис для заметок: эта страница станет домом всех ваших записей.

Ежедневный планировщик

Ежедневный планировщик

Чтобы быстро записать личные дела и рутину.

Bullet-журнал

Bullet-журнал

Популярный способ планирования на бумаге, но теперь не на бумаге.

Шаблоны пригодятся, если вы не хотите тратить время на настройку инструмента под себя.

Создаем вместе в Notion: календарь + список дел

Иконка канала Игровой Мир

Покажу как создать простой календарь с событиями, мероприятиями и интегрированный в него список дел. Ссылка на бесплатный шаблон для еженедельного планирования и списка дел: https://www.notion.so/5de068bb77414e11b68c079c1d953d38 Таймкод: 00:00 Приветствие 02:30 Почему я использую web-версию Notion 03:50 Недостатки ведения календаря в Notion 09:25 Для кого будет полезно сегодняшнее видео 11:25 Преимущества ведения календаря в Notion 16:43 Создаем шаблон календаря на неделю 25:50 Как создавать колонки на странице 26:24 Как изменить цвет шрифта, цвет заливки шрифта или цвет заливки блока 27:53 Блок «callout» — как менять цвет и иконку 30:24 Как вставить иконку emoji в любое место на странице 33:05 Планируем задачи, встречи и напоминания дня 33:33 Повторяющиеся встречи, задачи и напоминания без привязки ко времени 37:44 Как работает Template button для повторяющихся встреч, задач и напоминаний 42:03 Повторяющиеся встречи, задачи и напоминания с привязкой ко времени 45:58 Как отметить сколько времени занимает задача 47:25 Как включить уведомление — напоминание (reminder) 50:55 Самое важное дело дня 55:34 Ответ на вопрос «нужно ли отчеркивать» дела или это происходит автоматически при копировании 55:52 Создаем копию календаря на новую неделю 01:00:50 Создаем мастер-базу для разовых нерегулярные задач 1:08:45 Создаем прилинкованную базу с задачами (linked database) на странице недельного планирования и удобные виды. Добавляем разовые задачи и встречи в календарь * * * Если вам понравилось это видео и оно было полезно, поделитесь им с друзьями. * * * Давате дружить в соцсетях! Личный профиль на Facebook https://www.facebook.com/lidia.chmel Бизнес-страница на Facebook https://www.facebook.com/lidiachmelcoach Инстаграм https://www.instagram.com/lidiachmel/ Записаться на бесплатную сессию-знакомство: https://calendly.com/lidiachmelmidlifecoach/30minsgettonow #Notion #NotionдляНачинающих #Планирование

Показать больше

Войдите , чтобы оставлять комментарии

Как синхронизировать Notion с календарем Google

Вы используете Календарь Google для настройки мероприятий, планирования встреч или организации мероприятий по проекту? А вы используете Notion для заметок, создания вики или управления задачами и проектами?

Хотели бы вы объединить две службы вместе, чтобы управлять своими проектами и быть в курсе предстоящих задач или встреч команды? Если да, то вот руководство, которое поможет вам интегрировать Календарь Google с Notion, чтобы вы могли синхронизировать свои обновления из Календаря Google с Notion.

Интеграция Google Calendar и Notion

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Но сначала давайте ответим на несколько вопросов.

Зачем использовать Календарь Google с Notion?

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

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

Управление проектами и задачами

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

Но, несмотря на то, что он предлагает некоторые функции управления проектами, он не соответствует необходимым функциям, которые предоставляют современные службы управления проектами.

И именно здесь вступает в игру цель интеграции – позволить вам управлять своими проектами и сотрудничать с товарищами по команде, используя мощь Notion, и отслеживать предстоящие события, встречи и задачи с помощью Календаря Google.

Таким образом, вы можете оптимизировать рабочий процесс, поскольку теперь вы можете просматривать все свои календарные задачи прямо в структуре проекта в Notion. И, в свою очередь, сэкономьте время, которое в противном случае было бы потрачено на переключение между двумя приложениями (Notion и Google Calendar).

Как Notion интегрируется с Календарем Google?

Интеграция Календаря Google с Notion – довольно простой процесс: вы делаете свой календарь в Календаре Google общедоступным, копируете его общедоступный URL-адрес и добавляете его на свою страницу Notion. Но, прежде чем вы будете слишком взволнованы и начнете интегрировать свои календари, вам нужно знать одну вещь.

Даже после интеграции (или, скорее, встраивания) Календаря Google в рабочее пространство Notion вы не сможете вносить изменения в свои календари в Notion.

Это связано с тем, что в процессе интеграции двух сервисов вы, по сути, встраиваете Календарь Google в Notion, а это не совсем то, что означает интеграция и как она работает.

В результате календари, которые вы добавляете в Notion, предлагают разрешение только на просмотр, не позволяя вам изменять записи в вашем Календаре Google в Notion.

Календарь Google только для просмотра на Notion

К счастью, вы можете изменять события, расписания и другие записи календаря в Календаре Google, как обычно, и отображать их в рабочем пространстве Notion. Но есть еще одна загвоздка: синхронизация записей требует времени, чтобы отразить ее в Notion.

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

Как интегрировать Календарь Google с Notion?

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

Шаги по встраиванию Календаря Google в Notion

  • Перейдите в Календарь Google и войдите в свою учетную запись.
  • Наведите указатель мыши на календарь, который вы хотите встроить, в разделе «Мои календари» в левой части и щелкните меню из трех точек.
  • Как только вы нажмете на меню, вы увидите несколько различных опций. Выберите Настройки и общий доступ отсюда.

Интегрируйте Календарь Google с Notion

  • На странице настроек календаря прокрутите вниз до раздела «Разрешениянадоступ» и установите флажок «Сделать доступным длявсех». И во всплывающем окне «Предупреждение» нажмите «ОК».

Интегрируйте Календарь Google с Notion

  • Затем выберите «Интегрировать календарь» в меню слева в разделе «Настройки моих календарей».
  • Прокрутите вниз до раздела «Интеграция календаря» и скопируйте URL-адрес в разделе «Общедоступный URL-адрес» для этого календаря.

Интегрируйте Календарь Google с Notion

  • Теперь откройте Notion и войдите в свою учетную запись.
  • Перейдите в свое рабочее пространство (и на страницу), в которую вы хотите встроить Календарь Google.

Интегрируйте Календарь Google с Notion

  • В редакторе Notion введите /embed. И во всплывающем окне выберите ссылку « Вставить » и вставьте ссылку на календарь, которую вы только что скопировали.
  • Наконец, нажмите ссылку «Вставить »

Интегрируйте Календарь Google с Notion

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

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

Изменение размера Календаря Google и изменение настроек просмотра

Стоит ли все-таки синхронизировать Календарь Google с Notion?

Что ж, ответ на этот вопрос зависит от того, чего вы пытаетесь достичь, интегрируя две службы. Если вы хотите создать рабочее пространство в Notion, где вы можете хранить все обновления и информацию, относящиеся к вашему проекту, в одном месте, чтобы вы и члены вашей команды всегда были в курсе событий вашего проекта, интегрируя Календарь Google с Notion имеет абсолютный смысл.

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

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *