Задачи в двух приложениях всегда синхронны — в обе стороны

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

  • Синхронизация задач в обе стороны
  • Изменения переносятся сразу
  • Ничего не задваивается
  • Ежедневная сводка на почту
Notionn8n FormWebhookRedisTodoist

Как это работает

Чтобы данные в Gmail и Notion всегда совпадали, их связывает готовый сценарий — изменения переносятся сами.

  1. Запуск: OAuth-перенаправление
  2. Затем: Получить переменные
  3. Проверка: Проверить токен безопасности
  4. Если да — Обменять токены
  5. Запуск: Ответить успешно
  6. Запуск: Ответить с ошибкой
  7. Затем: Получить базы данных Notion
  8. Затем: Подготовить выпадающий список
  9. Затем: Выбрать базу данных Notion
  10. Затем: Получить ID базы данных Notion
  11. Затем: Получить проекты
  12. Затем: Подготовить выпадающий список1
  13. Затем: Выбрать проект Todoist
  14. Затем: Получить ID проекта Todoist
  15. Затем: Получить разделы
  16. Затем: Сгенерировать конфиг
  17. Затем: Вернуть JSON конфига
  18. Затем: Сгенерировать токен безопасности
  19. Затем: Сохранить переменные
  20. Затем: Перенаправить на страницу авторизации
  21. Запуск: Помощник настройки синхронизации Notion-Todoist
  22. Запуск: Помощник настройки вебхука Todoist
  23. Затем: Notion
  24. Затем: Сопоставить Notion с Todoist
  25. Затем: Сравнить наборы данных
  26. Затем: Обработать пустые даты2
  27. Затем: Добавить ID проекта
  28. Проверка: Если ID Todoist существует
  29. Если да — Установить попытки
  30. Затем: Получить задачу Todoist
  31. Проверка: Если не удалено
  32. Если да — Отметить как незавершённое в Todoist
  33. Затем: Update task in Todoist
  34. Затем: Получить сопоставленный элемент
  35. Проверка: Слияние
  36. Проверка: Обработать по одному1
  37. Затем: Сгенерировать UUID
  38. Затем: Подготовить элементы пакетной обработки
  39. Затем: Агрегировать
  40. Затем: Обновить раздел (Sync API)
  41. Проверка: Объединить сводку
  42. Проверка: Отфильтровать изменения статуса
  43. Затем: Сопоставить Todoist с Notion
  44. Затем: Сопоставить поля сводки
  45. Затем: Преобразовать в HTML-таблицу
  46. Затем: Сгенерировать тело письма
  47. Затем: Gmail
  48. Затем: Заблокировать ID Todoist
  49. Если нет — Создать задачу в Todoist
  50. Затем: Сохранить ID Todoist
  51. Затем: Получить сопоставленный элемент2
  52. Проверка: Поймать известную ошибку
  53. Если нет — Ожидание
  54. Затем: Обновить попытки
  55. Проверка: Если остались попытки
  56. Если нет — Достигнут лимит повторных попыток
  57. Затем: Обработать пустые даты
  58. Затем: Обновить задачу в Todoist
  59. Проверка: Статус изменен
  60. Затем: Получить сопоставленный элемент1
  61. Затем: Заблокировать ID Todoist2
  62. Затем: Подготовить данные сводки
  63. Проверка: Обработать по одному
  64. Проверка: Существует/Завершено в Notion
  65. Если да — Сопоставить Notion с Todoist1
  66. Затем: Обработать пустые даты1
  67. Затем: Обновить задачу в Todoist перед закрытием
  68. Проверка: Статус Done
  69. Если да — Отметить как завершённое в Todoist
  70. Затем: Подготовить данные сводки1
  71. Если нет — Удалить задачу в Todoist
  72. Затем: Подготовить данные сводки2
  73. Затем: Заблокировать ID Todoist1
  74. Затем: Получить задачу Notion
  75. Затем: Выбрать поля Todoist
  76. Запуск: Запланировать триггер
  77. Затем: Общие настройки
  78. Затем: Todoist
  79. Запуск: Триггер выполнения сценария
  80. Проверка: Есть различия1
  81. Затем: Обновить задачу в Notion
  82. Затем: Заблокировать ID Notion
  83. Проверка: Дата выполнения пуста
  84. Затем: Отметить как Focussed в Notion
  85. Проверка: Требуется изменение завершения1
  86. Проверка: Не было завершено?
  87. Если да — Отметить как In Progress в Notion
  88. Если да — Не сфокусировано и не запланировано1
  89. Если нет — Отметить как Done в Notion
  90. Затем: Создать задачу в Notion
  91. Затем: Данные выполнения2
  92. Затем: Обновить описание в Todoist
  93. Затем: Преобразовать Markdown в блоки Notion
  94. Затем: Обработать каждый блок отдельно
  95. Затем: Добавить блок Notion
  96. Затем: Отметить как Obsolete в Notion
  97. Проверка: Продолжить, если не заблокировано
  98. Проверка: Если событие не :deleted
  99. Если да — Установить попытки2
  100. Затем: Получить задачу Todoist1
  101. Затем: Сопоставить Todoist с Notion1
  102. Затем: Данные выполнения1
  103. Затем: Получить задачу Notion1
  104. Проверка: Задача Notion не найдена
  105. Если да — Проверить существование флага создания1
  106. Проверка: Продолжить, если флага нет1
  107. Затем: Установить флаг создания1
  108. Затем: Получить ID раздела бэклога
  109. Затем: Сгенерировать UUID1
  110. Затем: Обновить раздел (Sync API)1
  111. Если нет — Данные выполнения3
  112. Проверка: Переключить по событию
  113. Если да — Изменение описания в Todoist
  114. Затем: Обновить описание в Todoist1
  115. Проверка: Поймать известную ошибку2
  116. Если нет — Ожидание2
  117. Затем: Обновить попытки2
  118. Проверка: Если остались попытки2
  119. Если нет — Достигнут лимит повторных попыток2
  120. Если нет — Получить задачу Notion2
  121. Проверка: Задача Notion найдена1
  122. Затем: Данные выполнения4
  123. Затем: Проверить, заблокирован ли ID Todoist
  124. Затем: Данные выполнения
  125. Затем: Общие настройки1
  126. Проверка: Требуется изменение завершения
  127. Проверка: Было завершено?
  128. Если да — Отметить как завершённое в Todoist1
  129. Затем: Получить ID Todoist
  130. Затем: Заблокировать ID Todoist4
  131. Если нет — Отметить как незавершённое в Todoist1
  132. Проверка: Есть различия
  133. Затем: Обновить задачу в Todoist1
  134. Проверка: Продолжить, если не заблокировано1
  135. Затем: Get Notion task
  136. Затем: Сопоставить Notion с Todoist2
  137. Затем: Данные выполнения6
  138. Проверка: Статус Obsolete?
  139. Если да — Todoist ID существует
  140. Затем: Удалить задачу в Todoist2
  141. Затем: Получить ID Todoist1
  142. Если нет — Не сфокусировано и не запланировано
  143. Если нет — Todoist ID существует?
  144. Если да — Установить попытки1
  145. Затем: Получить задачу Todoist2
  146. Проверка: Если не удалено1
  147. Если да — Статус изменен, но не пустой
  148. Затем: Сгенерировать UUID2
  149. Затем: Обновить раздел (Sync API)2
  150. Если нет — Статус не Done
  151. Затем: Проверить существование флага создания
  152. Проверка: Продолжить, если флага нет
  153. Затем: Установить флаг создания
  154. Затем: Создать задачу в Todoist1
  155. Затем: Сохранить ID Todoist1
  156. Проверка: Поймать известную ошибку1
  157. Если нет — Ожидание1
  158. Затем: Обновить попытки1
  159. Проверка: Если остались попытки1
  160. Если нет — Достигнут лимит повторных попыток1
  161. Затем: Проверить, заблокирован ли ID Notion
  162. Запуск: Notion Webhook
  163. Проверка: Тело — массив?
  164. Если да — Разделить изменения Notion
  165. Затем: Извлечь ID
  166. Затем: Общие настройки2
  167. Затем: Данные выполнения5
  168. Запуск: Todoist Webhook
  169. Проверка: Переключить по проекту
  170. Затем: Запустить сценарий
  171. Запуск: Вебхук
  172. Проверка: Переключить
  173. Если нет — Запустить сценарий1

Настроить такую автоматизацию (Gmail + Notion) можно в Scriptera — без кода: опишите задачу, остальное сделают за вас.