Сводим все задачи в Google Calendar

Во многих статьях о продуктивности пишут, что у человека всегда должен быть список дел, которые он должен сделат за день. Однако во время работы нередко происходит так, что личные задачи лежат в одном месте, корпоративные - в другом, задачи open source проекта (к примеру) - в третьем. Сегодня мы поговорим о том, как собрать единый список задач в Google Calendar автоматически и в каждый момент времени понимать свою повестку дня.

Почему Google Calendar?

Google сервисы отлично синхронизируются с большинством платформ: iOS, MacOS, Android, даже WindowsPhone! На Windows 10 вроде тоже работала синхронизация, но я ее запускал очень давно, поэтому уверенно утверждать о том, что события адекватно придут на эту операционную систему от Microsoft, не буду.

С Google сервисами отлично интегрированы различные автоматизаторы типа IFTTT или Zapier, поэтому в случае отсутствия готовых инструментов синхронизации, всегда можно попробовать накостылять что-то свое. А если даже таким образом решить проблему не получится, то для большинства популярных языков программирования есть модули, умеющие общаться с Google API.

Однако, не все так плохо, и далее Вы в этом убедитесь :)

А почему календарь? Там же нет задач!

Задачи могут отображаться в календаре сверху как события на весь день. Таким образом, внизу будет график настоящих событий, а наверху будут все задачи. По-моему, это удобно:)

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

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

Внешние календари

Внешние календари подключаются с помощью ссылки. Добавление происходит с помощью кнопки “+”, далее “Добавить по URL”.

Вставляем туда ссылку, нажимаем на “Добавить календарь”. И готово!

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

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

Подключение сервисов

Wunderlist

Работает через подключение календаря по ссылке.

  1. Заходим в веб-приложение
  2. Нажимаем на стрелочку рядом с именем
  3. Далее “Параметры учетной записи”
  4. Чуть ниже будет поле “Канал календаря” со ссылкой. Добавляем ссылку указанным выше способом, и задачи из Wunderlist появляются в Google Calendar!

Trello, Todoist

Для настройки нужно зарегистрироваться на IFTTT, подключить аккаунты Trello и Google Calendar и настроить соответствующую автоматизацию с помощью ссылок ниже. Частично процесс работы с этим сервисом описан здесь.

Flow

Flow также поддерживает синхронизацию календаря по ссылке. Подробная инструкция по настройке находится здесь. Нужно отметить, что указанных в статье настроек нет в бета-версии веб-приложения, поэтому нужно по-старинке заходить на http://app.getflow.com.

Gitlab

Let’s hardcore begins! Нету у них никакой поддержки экспорта крайних сроков issue. Можно попробовать сделать костыль на Zapier, который умеет подключаться к обоим сервисам, но я не рискнул это сделать.

На github есть проект, который умеет осуществлять синхронизацию через Webhook. Я дописал поддержку Docker, кому надо - пользуйтесь. Конечно же минус такого решения: придется заморачиваться с сервером. Но если у Вас нет проблем с этим, перейдем к настройке:

  1. Переходим в Google Developer Console

  2. Создаем проект

  3. Создаем сервисный аккаунт

  4. Создаем ключ сервисного аккаунта, скачиваем его и кладем в папку с проектом

  5. С помощью верхнего поиска находим Google Calendar API и включаем его

  6. Создаем календарь в Google Calendar, и даем доступ сервисному аккаунту на внесение изменений

  7. Отредактировать конфигурационный файл:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    {

    "logLevel": "INFO",

    "timezone": "Europe/Moscow",

    "googleSecretFile": "НАЗВАНИЕ ФАЙЛА ИЗ 4 ПУНКТА",
    "gitlabSecret": "ЛЮБОЕ СЛУЧАЙНОЕ СЛОВО (БУДЕТ ИСПОЛЬЗОВАТЬСЯ ДЛЯ ПРОВЕРКИ ДОСТУПА)",

    "gitlabApi": {
    "enable": false,
    "url": "https://gitlab.com/",
    "token": "paste_impersonation_token_here",
    "inviteAssignees": true
    },

    "authorizedDomain": "your-gsuite-domain.net",

    "listenPort": 8080,

    "ssl": {
    "enable": false,
    "keyfile": "/etc/letsencrypt/live/domain_name/privkey.pem",
    "certfile": "/etc/letsencrypt/live/domain_name/fullchain.pem"
    },

    "repoMap": {
    "НАЗВАНИЕ РЕПОЗИТОРИЯ": "НАЗВАНИЕ КАЛЕНДАРЯ",
    "НАЗВАНИЕ РЕПОЗИТОРИЯ 2": "НАЗВАНИЕ КАЛЕНДАРЯ 2"
    },

    "dropPrivileges": {
    "enable": false,
    "user": "nobody",
    "group": "nobody"
    }
    }
  8. Выкладываем приложение gitlab-calendar на какой-нибудь сервер. Оно должно запуститься на порту 8080 (если Вы ничего не меняли)

  9. Идем на http://gitlab.com

  10. Открываем нужный проект, затем Settings / Integrations

  11. Вставляем ссылку на работающее приложение

  12. В Secret Token вставляем ЛЮБОЕ СЛУЧАЙНОЕ СЛОВО, которое Вы написали в конфигурационном файле в 7 пункте

  13. Добавлем webhook

  14. Готово (да, наконец-то)

Постарался описать все подробно, надеюсь, у Вас получится:)

Если инструкции по интеграции Вашего любимого сервиса тут нет, напишите мне или дополните статью самостоятельно.

Продуктивной Вам недели!:)