Как сделать календарь в Notion
ПО для повышения производительности – Понятие – используется для отслеживания и мониторинга задач, проектов и хранения ваших онлайн-документов. Календари Notion — это, по сути, базы данных, которые упрощают просмотр вашей информации, организованной по датам. Если вы хотите узнать, как создать календарь Notion, мы описали шаги в этой статье.
Мы также описали, как вы можете создавать еженедельный календарь, настраивать свой календарь и создавать различные представления при использовании Notion на рабочем столе.
Как создать календарь в Notion?
Чтобы создать представление календаря существующей таблицы Notion:
- Запустите Notion и перейдите в таблицу, в которую вы хотите вставить календарь.

- Нажмите
- Откройте “Карточку 1” затем нажмите “Статус”

- Нажмите Изменить свойство.

- Измените “Выбрать” свойство “Multi-select” нажав “Выбрать” > “Множественный выбор”

- Затем введите все дни недели, нажав кнопку “Пустой” поле справа от “Статус”
- Это будут названия досок для перемещения задач.
- Чтобы удалить автоматически включенные параметры – «Не запущен» “В процессе» и “Завершено” Нажмите на них, затем на появившийся значок с тремя точками и выберите “Удалить” > “Удалить”

- Чтобы отобразить день, нажмите “Статус” и введите “День” затем “Множественный выбор” > “Выбрать.”

- Нажмите на три точки рядом с любым предварительно заполненную информацию и нажмите «Удалить».

- Введите дни недели. Затем нажмите на значок с тремя точками, чтобы выделить их цветом.

- Чтобы изменить назначенный столбец на столбец даты, нажмите “Назначить” > «Человек» > “Дата.”

- Нажмите “Пустой” поле справа от “Назначить” и выберите дату.

- Нажмите “Назначить” и введите «Начало недели».
- Поскольку мы не можем использовать свойство select для изменения даты, мы будем использовать Формула, чтобы увидеть задачу в виде календаря:
- Нажмите “Добавить свойство” и назовите свойство “Дата” выберите “Текст” под типом свойства.

- Выберите “Формула” затем щелкните значок “Пустой” поле справа от поля ‘Дата” свойство.

- Нажмите “День” имущество. prop («День») появится в поле «Введите формулу». текстовое поле вверху.

- Следующий параметр (“День”) введите == (два знака равенства ) вторник”).
Итак, это звучит так:- prop (“День”) == вторник”)
- Теперь нам нужно добавить один день в столбец даты, который мы указали как «Начало недели». в противном случае это всегда будет понедельник. Во вторник мы добавим один день к исходной дате. Для этого:
- Введите ?dateAdd(prop( “Начало недели” ) ,1, “days”) : prop(“Начало недели”)
-
При этом мы спрашиваем, если сегодня “вторник” затем добавьте один день к “Началу недели” если это не “вторник” затем используйте “Начало недели:”
В целом это выглядит так: - prop (“День”) == вторник”) ?dateAdd(prop(“Начало недели” ) ,1, “дни”) : prop(“Начало недели”)
- Затем выберите “Готово”
- Нажмите “вторник” и вы увидите, что “Дата” изменена на вторник’

- Эта формула будет работать только для понедельника и вторника – для остальной части недели:
- Нажмите “вторник” и вы увидите, что “Дата” изменена на вторник’
- Нажмите на дату, чтобы открыть окно свойств.

- Затем скопируйте следующее:
prop (“День”) == вторник”)?dateAdd(prop( “Начало недели” ) ,1, “days”) : часть формулы.
- Вставьте перед следующим:
prop (“Начало недели”) part.
В целом это выглядит следующим образом:- prop (“День”) == вторник” ) ? dateAdd(prop( “Начало недели” ), 1, “дни”) : prop(“День”) == вторник”) ? dateAdd(prop(“Начало недели”) ,1, “дни”): prop(“Начало недели”)

- prop (“День”) == вторник” ) ? dateAdd(prop( “Начало недели” ), 1, “дни”) : prop(“День”) == вторник”) ? dateAdd(prop(“Начало недели”) ,1, “дни”): prop(“Начало недели”)
- Замените второй “Вторник” на “Среда.”

- Замените второй ,1, “дни”) часть с “2.”

В целом это выглядит так:- реквизит (“День”) == вторник”) ? dateAdd(prop(“Начало недели”) ,1, “дни”) : prop(“День”) == среда”) ? dateAdd(prop(“Начало недели”) ,2, “дни”): prop(“Начало недели”)

- реквизит (“День”) == вторник”) ? dateAdd(prop(“Начало недели”) ,1, “дни”) : prop(“День”) == среда”) ? dateAdd(prop(“Начало недели”) ,2, “дни”): prop(“Начало недели”)
- Повторите шаги 18 – 21 со следующим:
- “Четверг” добавить 3 дня

- “Пятница” добавить 4 дня

- “Суббота” добавить 5 дней

- “воскресенье” добавить 6 дней

- “Четверг” добавить 3 дня
- Затем выберите “Готово»

Как удалить календарь в Notion
Если вы сделали ошибка и необходимость удалить календарь в Notion, вы можете. Вот как это сделать:
- откройте Notion и перейдите на страницу с календарем.

- Нажмите значок с тремя точками.

- Нажмите Удалить представление.

Как добавить календарь в Существующая страница
Если вы хотите вставить календарь на страницу, вот что нужно сделать:
- Откройте страницу Notion, где вам нужно вставить календарь.

- Нажмите, чтобы вставить текст. Затем введите /calendar.

- Выберите один из вариантов справа.

Дополнительные часто задаваемые вопросы
Вот ответы на другие ваши вопросы о календарях Notion.
Как создать представление календаря в Notion?
Чтобы создать представление календаря существующей таблицы Notion:
1. Запустите Notion и перейдите к таблице, для которой вы хотите создать представление календаря.
2. Убедитесь, что в вашей таблице есть хотя бы один столбец дат.
3. Нажмите на кнопку “Добавить представление” в левом верхнем углу заголовка таблицы.

4 . В меню просмотра введите имя вашего представления.
5. Выберите “Календарь” вариант просмотра.

6. Затем нажмите кнопку “Создать” кнопка.

· В представлении календаря ваши задачи будут отображаться по дате.
Как создать собственный календарь в Notion?
Вы можете настроить свой календарь Notion следующими способами:
путем редактирования свойств
Чтобы определить свой календарь, вы можете использовать столько свойств, сколько хотите, чтобы отображать необходимую информацию и обеспечивать контекст:
1. Добавьте новую карточку в свой календарь и нажмите “+ Добавить свойство” с открывшейся страницы. Или в верхней части календаря нажмите “Свойства” > “+ Добавить ресурс”
2. Назовите свойство и выберите его тип в поле “Тип свойства” меню.
3. Чтобы удалить или скопировать свойство, слева от него в “Свойства” нажмите на значок **⋮⋮**, чтобы открыть параметры свойств.
Перемещая и растягивая карточки
Вы можно изменить порядок карточек в календаре, перетащив их:
· Выберите и удерживайте любую карточку, чтобы перетащить ее на любой день в календаре.
· Чтобы растянуть карту на несколько дней:
1. Наведите указатель мыши на его правый или левый край.
2. Затем щелкните и перетащите его в любом направлении, чтобы развернуть его.
Отображая, скрывая и упорядочивая свойства
Вы можете решить, какие свойства вы хотите отображать на своих календарях. Например, тип назначения или статус приоритета и т. д.:
· Выберите “Свойства” затем нажмите на переключатели рядом со свойствами в вашей базе данных, чтобы скрыть или отобразить их.
· Используйте значок **⋮⋮**, чтобы изменить порядок отображения свойств на карточках календаря, перетащив их вверх или вниз на вкладке “Свойства” меню.
Как добавить событие в календарь в Notion?
Вы можете добавить новую карточку для мероприятия в свой календарь следующими способами:
• Чтобы создать новое событие в определенный день, наведите указатель мыши на день, затем нажмите значок “+” которое появляется.
• Чтобы создать новую карточку в день(а), который вы указали с помощью свойства даты, которое использует ваш календарь, нажмите кнопку “Новый” кнопку в правом верхнем углу.
&бык; Вы можете охватить мероприятие более чем за один день, наведя указатель мыши на правый или левый край карточки, а затем перетащив его в нужном направлении.
Как дела? Редактировать запись календаря в Notion?
Чтобы отредактировать запись календаря:
1. Выберите запись, которую хотите изменить, в представлении календаря.
2. Отобразится страница Notion для записи.
3. Внесите свои изменения; они будут сохранены автоматически.
Как редактировать представление календаря в Notion?
Чтобы создать другой вид календаря:
1. Запустите Notion и получите доступ к календарю.
2. Нажмите на кнопку “Добавить представление” вариант в левом верхнем углу календаря.
3. Выберите нужное представление из раскрывающегося списка параметров.
4. Присвойте новому представлению имя и нажмите “Создать”
Чтобы создать представления, отображающие различные фильтры, примененные к вашему календарю:
1. Из “Календаря содержания” страница.
2. Нажмите на стрелку вниз рядом с только что созданным представлением календаря.
3. Выберите “Добавить представление” > “Календарь” затем введите его имя и “Создать”
4. Выберите “Фильтр” вариант из “Свойства” варианты вправо.
5. Нажмите “Добавить фильтр”
6. Нажмите на “Имя” стрелка вниз, чтобы выбрать имя фильтра.
7. Затем нажмите кнопку “Выбрать вариант” стрелка вниз, чтобы выбрать параметр фильтра.
Чтобы переключаться между различными представлениями календаря, нажмите на стрелку вниз прямо над вашими календарями слева, чтобы открыть меню “Вид .”
Увеличение производительности с помощью календарей Notion
Приложение Notion предлагает функции управления проектами, такие как базы данных, доски Канбан, календари и т. д., которые помогают повысить производительность и управлять знаниями. Календари полезны для обзора ваших графиков запуска, проектов и всех ваших важных дат с высоты птичьего полета.
Теперь, когда мы показали вам, как создать календарь Notion, настроить его и установить различные представления календаря, помогло ли использование календаря повысить вашу производительность? Что вам нравится и не нравится в календарях Notion? Мы будем рады узнать о вашем опыте использования Notion; дайте нам знать в разделе комментариев ниже.
Calendar view
Calendars let you visualize how database items connect to certain dates. Use one when you want a bird's-eye view for important launch dates, multi-day events, or even projects spanning multiple months ️
- Create a calendar
- Full-page calendar
- In-line calendar
- Add calendar view to a database
- Cards: pages in calendar view
- Open a card as a page
- Customize page
- Add cards
- Card options
- Customize your calendar
- Weekly view
- Show another month
- Edit properties
- Move & stretch cards
- Display, hide & order properties
- Switch between calendars
- Start your week on Monday
- Database view features
- Filter your calendar
- Search your calendar
- Link to your calendar
Create a calendar
Calendars show when your database items are scheduled to take place. To use one, your database must contain a Date property. There are several ways to add a calendar to Notion:
Full-page calendar
Create a new page in your workspace.
Click on Calendar in the grayscale menu provided.
In-line calendar
If you want to create a calendar inside another page:
On a new line, type /Calendar view full and press enter .
Now when you go back to your original page, you'll see this calendar nested inside.
Note: Expand in-line databases to full-page by clicking ⤢ at the top right. Hover over the top of your database to see its option menus. Click ••• to see the Properties , Filter , and Sort options.
Add calendar view to a database
You can add a calendar to an existing database to view its data in that format. Learn more about views here →
Click + Add a view or the name of the current view at the top left of your database.
Select Calendar from the dropdown menu, and give it a name in the text box.
Click Create and your brand new calendar will pop up.
You can still toggle back to other views using that same left dropdown.
Cards: pages in calendar view
Open a card as a page
Database items appear on your calendar as cards spanning just one or multiple days. Click to rename them, configure properties, and add page content within.
Just click on any card to open it as a page.
It'll open in preview mode. Click Open as page at the top left to make it full-page.
You'll see all your properties organized at the top.
Click on the property name to edit it or its type.
Click in the property field to edit its content.
Reorder properties by hovering and using the ⋮⋮ to drag and drop them up or down.
You can also add a new property to your timeline by clicking ••• then clicking Properties and + New property .
Under properties, there's space for comments that will be attributed to you.
The body of the page can be edited just like any other Notion page. Add whatever content blocks you want, including in-line databases.
Customize page
When you open any page, you have the ability to change how it looks in a few ways that go beyond typography and text size.
Click ••• at the top right of any open project page, then Customize page .
You'll see a menu to edit the appearance of Backlinks and Comments , as well as Properties .
For backlinks, choose to show them expanded in the body of your page or in a popover.
For comments, choose to show them expanded or hidden in the page body.
For properties, rearrange them using the ⋮⋮ icon, and choose whether to always show them, always hide them, or only show them when in use.
Note: Backlinks show you what other pages this page is linked to across your workspace. Learn more about backlinks here →
Add cards
There are several ways to add a new card to your calendar.
Click the + icon that appears when you hover over any day. This creates a new event on that day.
Click the blue New button at the top right. This creates a new card on the day or days you specify in the date property your calendar is using.
Once you add a card to a date, you can stretch it to span more than one day. Hover over the right or left edge of the card, then drag to expand in that direction.
Note: You can include multiple date properties in a database — for instance, one due date property and one launch date property.
When you have multiple date properties, you'll see the option to switch between them at the top.
Let's say you don't fill in the date property being shown by your calendar. You'll see a new menu called No [date property] appear at the top.
In the example above, it's called No Launch Date or No Due Date .
Clicking on this will let you see and view the pages in your database that haven't been assigned a date in the chosen property.
Card options
Right click on any card to bring up this menu of options:
Delete : Deletes the card.
Duplicate : Creates an exact copy of the card below it.
Copy link : Copies an anchor link to that specific card to your clipboard.
Rename : Lets you rename the card without opening it.
Move to : Lets you move the card to another workspace or page (where it will show up as a sub-page).
Edit property : Brings up a menu with all your calendar's properties. Click the one you want and then click the new value for it.
Tip: You can apply these actions to multiple database pages at once. Just select all the pages you want to modify. Then, right click or use the shortcut cmd/ctrl + / to edit properties in bulk!
Customize your calendar
You can modify your calendar in a few different ways. Change its properties and appearance.
Weekly view
To get a more specific view of your calendar, you can display your pages as weeks instead of months:
Click ••• in the top right of your database, then Layout
Click Show calendar as and then select Week
Show another month
Notion calendars display in monthly format. Skip back to a past month or ahead to a future month in one of two ways:
Click the < or > arrows surrounding the word Today at the top right of your calendar.
Scroll down infinitely and you'll see the months advance at the top left of your calendar. (You can't scroll up to go back in time.)
Note: Your calendar will remember which date range you were viewing last. Next time you open the page, that's the range you'll see.
Edit properties
Every calendar is defined by a set of properties you create. You can add as many as you want to capture all the information you need. Here's how:
Add a new card to your calendar, and in the page that opens, choose + Add a property .
Or click Properties at the top of your calendar, then + Add a property .
Give that property a name and select its type from the Property type menu.
To delete or duplicate a property, just click on the ⋮⋮ icon to its left in the Properties menu and those options will pop up.
Move & stretch cards
Rearrange cards on your calendar with drag-and-drop.
Click and hold any card to drag and drop it to any other day on your calendar.
Have your card span multiple days by hovering over its right or left edge, clicking and dragging to expand it in either direction.
Display, hide & order properties
You can choose which properties you want displayed on the front of the cards on your calendar. For instance, show priority status, who is assigned, the type of assignment, etc.
Click Properties and then click the switches next to the properties in your database to hide or show them.
Rearrange the order they display on your calendar cards by using the ⋮⋮ icon to drag them up or down in the Properties menu.
Switch between calendars
If you have multiple date properties in your database, you can view separate calendars for each of them.
At the top of your calendar, you'll see a menu called By [property name] .
Click it to switch between calendars for each of your date properties.
You can also open this option from the ••• menu. Select Calendar by .
Start your week on Monday
Depending on where in the world you're located, all of your Notion calendars will start their weeks on Sunday or Monday. You can also change this setting:
Click on Settings & members then Language & region .
Switch the Start week on Monday toggle on or off accordingly.
Database view features
Filter your calendar
View only the cards that fit certain criteria, depending on what you need.
Click Filter at the top right of your calendar.
Choose which property you want to filter by from the dropdown.
Choose the condition you want to use, i.e. Contains , Does not contain , etc.
Define the value of the property you want to see, i.e. a specific tag or assignee.
You can add multiple filters at once this way too!
Remove filters by clicking the X next to them in the Filter menu.
Search your calendar
You can search for specific content in your calendar.
Click Search at the top right and type the word(s) you're looking for in card titles or property values.
You'll see your calendar change in real-time to only show cards that fit that criteria.
Link to your calendar
You can copy an anchor link to this specific view of your calendar so you can share it elsewhere.
Click the ••• icon at the top right of your calendar.
Click Copy link to view and the URL will copy to your clipboard so you can share it.
Templates: Here are some use cases for calendars from our team and the Notion community!
How can I turn a full-page database into an in-line database?
To turn a full-page database into an in-line database, you can just drag the database into another page in the sidebar, which will turn it into a sub-page.
Then click the ••• button at the right of the title of the subpage, and go to Turn Into Inline in the dropdown menu to turn it into an in-line database.
To turn it back into a full-page database, you can click and drag the in-line database back into your sidebar.
How can I tell which pages in my database contain comments?
If you add a comment in the discussion section of a timeline project page, or anywhere in the body of the page, you'll see a word bubble appear in that row of the table portion of your timeline with the number of comments it contains. If you hide the table, you cannot see whether projects contain comments at a glance.
How can I integrate a Notion calendar with my Google/Apple/Microsoft calendar?
You can use our API (currently in public beta) to integrate external platforms with Notion! Check out our developer hub to get started.
We also support the ability to embed a view-only Google Calendar into Notion if you're embedding from the same email address that you're using with your Notion account.
Any way to set a default date format for the date property?
Not at the moment, unfortunately. It’s definitely something we want to support in the future, though. We appreciate your patience while we make our way though our to-do list!
Can I have calendars start on Monday instead of Sunday?
Yes! This setting is automatic based on your region, but you can turn it on manually in the Language & region tab of Settings & Members in the left-hand sidebar. This will apply to every calendar in your Notion account.
Any way to see a daily/yearly view instead of the monthly view?
There's a daily view on mobile that you can access by tapping on any date in your calendar, or you can use our Timeline view, which allows you to display timescales from hours all the way to years!
Was this resource helpful?
Gallery view
Gallery view is the best way to display databases with visual components, like mood boards, office directories, virtual recipe boxes, and more ️
Календари
Календари позволяют наглядно представить, как элементы базы данных связаны с определенными датами. Используйте его, когда вам нужен вид с высоты птичьего полета для важных дат запуска, многодневных событий или даже проектов, охватывающих несколько месяцев ️.
Создайте календарь
Календари показывают, когда запланировано выполнение элементов вашей базы данных. Чтобы использовать календарь, ваша база данных должна содержать свойство Date . Существует несколько способов добавить календарь в Notion:
Полностраничный календарь
- Создайте новую страницу в рабочей области.
- Нажмите на Calendar (Календарь) в сером меню.
- Если вы хотите создать полностраничный календарь внутри другой страницы:
- В новой строке введите /calendar full и нажмите enter .
- Теперь, когда вы вернетесь на исходную страницу, вы увидите этот календарь, вложенный внутрь.
Встроенный календарь
Вы можете добавить встроенный календарь на страницу, чтобы он мог жить рядом с различными типами контента, такими как текст, другие страницы и т.д.
- В новой строке введите /calendar , затем нажмите enter .
Добавление представления календаря в базу данных
Вы можете добавить календарь к существующей базе данных, чтобы просматривать ее данные в этом формате. Подробнее о представлениях здесь →
- Нажмите + Add a view или на имя текущего представления в верхней левой части вашей базы данных.
- Выберите Calendar (Календарь) из выпадающего меню и дайте ему имя в текстовом поле.
- Нажмите кнопку Create (Создать), и на экране появится ваш совершенно новый календарь.
- Вы все еще можете вернуться к другим представлениям с помощью того же левого выпадающего списка.
Карточки: страницы в представлении календаря
Открыть карточку как страницу
Элементы базы данных появляются в календаре в виде карточек, охватывающих один или несколько дней. Нажмите на них, чтобы переименовать, настроить свойства и добавить содержимое страницы.
- Просто нажмите на любую карточку, чтобы открыть ее как страницу.
- Он откроется в режиме предварительного просмотра. Нажмите ⤢ Open as page (Открыть как страницу) в левом верхнем углу, чтобы сделать ее полностраничной.
- Вы увидите все свои свойства, упорядоченные в верхней части.
- Нажмите на имя свойства, чтобы отредактировать его или его тип.
- Щелкните в поле свойства, чтобы изменить его содержимое.
- Упорядочивайте свойства, наведя курсор и используя ⋮⋮ для перетаскивания вверх или вниз.
Настроить страницу
Когда вы открываете любую страницу, у вас есть возможность изменить ее внешний вид несколькими способами, которые выходят за рамки типографики и размера текста.
- Нажмите ••• в правом верхнем углу любой открытой страницы проекта, затем Customize page (Настроить страницу).
- Вы увидите меню для редактирования внешнего вида Backlinks (обратных ссылок) и Comments (комментариев), а также Properties (свойств).
- Для обратных ссылок выберите, показывать ли их развернутыми в теле страницы или во всплывающем окне.
- Для комментариев выберите, показывать их развернутыми или скрытыми в теле страницы.
- Для свойств можно изменить их расположение с помощью значка ⋮⋮ , а также выбрать, показывать их всегда, скрывать всегда или показывать только при использовании.
Добавить карточки
Существует несколько способов добавить новую карточку в календарь.
- Нажмите на значок + , который появляется при наведении курсора на любой день. Это создаст новое событие в этот день.
- Нажмите синюю кнопку New (Новая) в правом верхнем углу. Это создаст новую карточку в день или дни, которые вы укажете в свойстве даты, используемом вашим календарем.
- После добавления карточки к дате ее можно растянуть, чтобы она охватывала более одного дня. Наведите курсор на правый или левый край карточки и перетащите ее, чтобы растянуть в нужном направлении.
- Допустим, вы не заполняете свойство даты, отображаемое вашим календарем. В верхней части появится новое меню под названием No [date property] (Нет [свойство даты]).
- В приведенном выше примере он называется No Launch Date или No Due Date.
- Нажав на эту кнопку, вы сможете увидеть и просмотреть страницы в вашей базе данных, которым не была присвоена дата в выбранном свойстве.
Операции с карточками
Щелкните правой кнопкой мыши на любой карточке, чтобы вызвать следующее меню опций:
- Delete (Удалить): Удаляет карточку.
- Duplicate (Дубликат): Создает точную копию карточки, находящейся под ней.
- Copy link (Копировать ссылку): Копирует якорную ссылку на конкретную карточку в буфер обмена.
- Rename (Переименовать): позволяет переименовать карточку, не открывая ее.
- Move to (Переместить в): Позволяет переместить карточку в другое рабочее пространство или на другую страницу (где она будет отображаться как вложенная страница).
- Edit property (Редактировать свойство): Вызывает меню со всеми свойствами календаря. Щелкните нужное свойство, а затем выберите для него новое значение.
Настройте свой календарь
Вы можете изменить свой календарь несколькими различными способами. Изменить его свойства и внешний вид.
Показать другой месяц
Календари Notion отображаются в ежемесячном формате. Переход назад к прошлому месяцу или вперед к будущему месяцу осуществляется одним из двух способов:
- Нажмите на стрелки < или > вокруг слова Today (Сегодня) в правом верхнем углу календаря.
- Бесконечно прокручивайте календарь вниз, и вы увидите, что в левом верхнем углу календаря появляются месяцы. (Вы не можете прокручивать вверх, чтобы вернуться в прошлое).
Редактировать свойства
Каждый календарь определяется набором созданных вами свойств. Вы можете добавить столько свойств, сколько захотите, чтобы собрать всю необходимую информацию. Вот как это делается:
Как настроить удобную синхронизацию между Notion и календарем через ICS на JS без сервера
Уже почти 2 года я активно использую Notion в своей жизни. Я регулярно пополняю его своими личными автоматизациями, которые облегчают жизнь мне и моей команде. Иногда я публикую в своем блоге разные кейсы, которые удается оформить в виде библиотеки или примера кода. Данный пост также доступен в формате видео на моем канале.

Сегодня я решил поделиться тем, как я интегрировал календарь из Notion в Google Calendar через ics. Таким способом события из календаря Notion можно добавить в любой календарь, поддерживающий ics формат (то есть, практически, любой)
Немного предыстории
Обычно необходимость и суть любой интеграции и/или автоматизации проще понять, если понять зачем именно она была создана. Если хотите перейти, без предысторий, сразу к технике, листайте вниз до заголовка «Реализация».
Сейчас процесс общения с новыми запросами ко мне или моей компании происходит через моего Telegram бота или помощника. Но так оно работает только последний год…
Как оно работало раньше
Запрос может быть любой — могут начать предлагать какие-то “прорывные маркетинговые” услуги моей компании, обратиться ко мне за платными консультациями, предложить выступить на какой-нибудь конференции и тд.
Я старался вносить все в свой гугл-календарь. Ключевое слово — старался. Иногда меня даже хватало на целую неделю стабильных побед над моей ленью в этом вопросе. Поражение в этой схватке заканчивались накладками в созвонах и потерей репутации.
Мне достаточно быстро надоело обрабатывать подобное самому. В итоге начал приводить это в порядок. Среди наших клиентов есть серьезные люди, у которых есть помощники и все они, как один, ведут их календарь со всеми встречами и созвонами. Решил не придумывать велосипед и сделать тоже самое.
Причем я сразу решил идти не по пути предоставления доступа к гугл-календарю. Я хотел, чтобы я мог подвязывать свои задачи и заметки из моего Notion. Поэтому созвоны я решил хранить там же. Я создал базу в Notion с представлением (view) “календарь” и дал к нему доступ на внесение изменений.

В момент, когда приходит понимание, что необходимо устроить созвон создается (мной, ботом или помощником) сущность в Notion. Как велась моя база созвонов в мае 2022:
Указывается дата и время созвона;
В название, обычно, пишется имя фамилия человека и компании для идентификации в будущем;
В поле Info добавляется информация, необходимая для отображения внутри уведомления в Telegram боте. Обычно тут краткое описание о чем планируется разговор;
В тело уже размещается информация любого рода. Обычно помощник, после созвона, пишет расшифровки, договоренности и детали, которые могут быть полезны в будущем.
Желаемый функционал
Меня все устраивало кроме того, что для просмотра всех созвонов было необходимо идти в 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 базы данных соответственно.
Из 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 из массива событий можно следующим образом:
Массив Events представляет собой массив из следующих элементов:
Дальше уже дело техники: передать эту строчку в express (или любой другой http) сервер и передать ссылку в Google Calendar

После чего Google Calendar сам зайдет по ссылке, выкачает все события и добавит их в мой календарь. Все работает более чем стабильно и события появляются в календаре не более чем через 10 минут после добавления в Notion.
Если я, вдруг, чего-то поменяю в одном событии, то, при следующей закачке, вся информация актуализируется и в календаре.
Чтобы не держать сервер под такую мелочь я разместил этот простой скрипт на pipedream. Можете брать к себе, в env переменных указывать свои токен и id базы данных и добавлять в календарь ссылку.
Также сделал небольшой npm пакет, где все «костылизации» с датами спрятал в одном методе createIcsString , который на вход принимает токен и id базы данных (примеры оформил отдельно).