Как стать автором
Обновить

Организация задач на новом уровне: интеграция Google Sheets и Telegram-бота для эффективного планирования

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.8K

Привет, Хабр!

Меня зовут Евгений, и в этой статье я хочу рассказать, как я создавал свой таск - менеджер на базе Google Sheets и Telegram

Введение

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

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

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

Рождение идеи

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

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

В качестве базы я выбрал Excel — мощный инструмент, который уже давно зарекомендовал себя в мире управления данными. Но я хотел большего: мне нужно было решение, с которым можно работать в любом месте и на любых устройствах. Так родилась идея использовать Google Sheets. Эта платформа предоставляла возможность легко делиться документами, редактировать их в реальном времени и обеспечивала доступность с любого устройства — будь то компьютер, планшет или смартфон.

Этапы реализации

Для начала я создал таблицу в google sheets, чтобы просто фиксировать задачи.
Столбцы были такие:

  • Дата - дата добавления задачи;

  • Название - фактически название задачи;

  • Следующее действие - дополнительное информационное поле;

  • Приоритет;

  • Примечание;

  • Статус - статус задачи (В работе/Готово/В ожидании);

  • Дедлайн;

  • Время дня - информационное поле, время в течении дня, когда задачу нужно выполнить (для сортировки задач в течении одного дня);

  • Дата закрытия - дата/время фактического выполнения задачи.

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

• Красный — просроченные задачи;

• Оранжевый — дедлайн сегодня;

• Желтый — дедлайн завтра;

• Зеленый — выполненные задачи (зачеркнуты).

Также я окрашиваю задачи со статусом "Ожидание". Это те задачи, которые не зависят от меня, и я просто жду ответа от кого-то или какого-то события.

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

У меня появилась идея автосортировки: при изменении или добавлении задачи она должна автоматически вставляться на "свое" место. При этом выполненные задачи должны перемещаться в конец списка, так как они уже неактуальны.

Внешний вид google таблицы
Внешний вид google таблицы

Сортировать каждый раз вручную — не комильфо. Здесь мне на помощь пришла Apps Script — платформа на основе JavaScript для быстрой и простой разработки бизнес-решений, фактически для автоматизации работы с таблицами в Google Sheets.

Я написал простой код, который запускает функцию сортировки при изменении определённых полей (релевантных для сортировки):

function sortData(sheet) {
var lastRow = sheet.getLastRow();
var range = sheet.getRange("A2:L" + lastRow);

range.sort([
{ column: 4, ascending: true },
{ column: 7, ascending: true },
{ column: 8, ascending: true },
{ column: 9, ascending: true },
{ column: 6, ascending: true }
]);
}

Стало лучше, но добавление новой задачи по-прежнему занимало достаточно времени. Часто нужно быстро зафиксировать задачу в пару кликов, чтобы не забыть. Поэтому я разработал механизм, при котором задача считается добавленной, если заполнены два обязательных поля: название задачи и дедлайн. Если они заполнены, задача автоматически размещается на своем месте в реестре (спасибо автосортировке). Остальные поля заполняются автоматически: дата — текущая дата, приоритет — высокий, статус — в работе. Для реализации этого механизма я также использовал Apps Script.

Двигаемся дальше... Задачи теперь быстро добавляются, сортируются и подкрашиваются — работать стало удобно. Однако есть одно "но": все это возможно только со стационарного компьютера. Часто нужно зафиксировать задачу на совещании, в поездке или просто вдали от рабочего места. Кроме того, хотелось бы использовать этот инструмент для управления личными делами, а не только служебными.

Тогда возникла идея создать Telegram-бота. Telegram всегда под рукой, доступен на всех устройствах, стабилен, и библиотеки для интеграции с ним доступны для многих платформ и языков программирования.

Я выбрал Python. Создать бота довольно просто — в интернете есть множество пошаговых инструкций. В кратце: создаем бота через BotFather и добавляем для него меню команд.

О том, как я реализовал бота и интегрировал его с Google Sheets, расскажу в следующей статье. :-)

Использование Telegram - бота

В текущей реализации у меня есть следующие команды для бота:

  1. Добавить задачу;
    При добавлении задачи указываю, куда добавлять (личное / работа), указываю дедлайн, ввожу текст задачи. Далее бот спрашивает, нужно ли уведомить меня, и если да, то в какое время. При этом дату дедлайна, время, проект и т.д. я не ввожу вручную, а использую так называемую онлайн-клавиатуру.
    Online keyboard (онлайн-клавиатура) в Telegram-ботах — это интерактивный элемент интерфейса, который позволяет пользователям взаимодействовать с ботом более удобным способом. Вместо того чтобы вводить команды вручную, пользователи могут нажимать кнопки, которые бот предоставляет в виде клавиатуры.
    После успешного добавления задачи бот присылает соответствующее сообщение и присваивает номер добавленной задаче, который в дальнейшем может пригодиться.

    Экран бота при добавлении задачи
    Экран бота при добавлении задачи

    Да, если нужно быстро ввести задачу и нет времени на заполнение параметров, можно без выбора команды ввести сообщение в ТГ-бот, при этом создастся задача с таким названием, уйдет по умолчанию в реестр рабочих задач с дедлайном - сегодня.

    Быстрое добавление задачи
    Быстрое добавление задачи
  2. Завершить задачу
    При завершении задачи указываю номер задачи, которую хочу завершить. Далее бот присылает подтверждение о том, что задача завершена.

    Экран при завершении задачи
    Экран при завершении задачи
  3. Вывести задачи
    Команда, позволяющая вывести все незакрытые задачи с указанием номеров.

    Экран при выводе всех задач
    Экран при выводе всех задач
  4. Подробности
    Выводит в Telegram всю информацию о задаче. Для вывода необходимо ввести номер задачи.

    Подробности по задаче
    Подробности по задаче
  5. Редактировать
    Команда позволяет отредактировать задачу по нескольким параметрам: изменить дедлайн (дату/время) и/или добавить примечание.

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

    Экран поиска задач
    Экран поиска задач
  7. Уведомить
    Позволяет установить дату/время уведомления о данной задаче. В указанное время в Telegram-боте придет сообщение о необходимости выполнить задачу.

    Уведомление о задаче, приходит в указанное время
    Уведомление о задаче, приходит в указанное время
  8. Работа сегодня
    Выводит все выполненные сегодня задачи. Полезно, когда нужно, например, списать время на выполненные задачи в Jira.

    Работа сегодня
    Работа сегодня
  9. Скопировать
    Иногда возникают однотипные задачи, которые выполняются каждый день, например, проверка очередной порции данных в БД или ежедневная проверка данных отчета. Можно завести задачу один раз, и по команде "Скопировать" задача выполнится, но автоматически сформируется копия задачи, которую можно перенести на завтра и т.д., таким образом сэкономив время на заведение задачи.

  10. Отмена
    Отменяет действие.

Также у меня работают уведомления по умолчанию: каждое утро в 8:00 приходит сообщение о задачах на текущий день. Это позволяет мне сразу настроиться на продуктивный рабочий процесс.

Работа на сегодня
Работа на сегодня

Вечером в 17:00 я получаю перечень выполненных за сегодня задач, что помогает трекнуть затраченное время, например, для отчётов в Jira.

Выполнено сегодня
Выполнено сегодня

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

В качестве хостинга я использую PythonAnywhere — это удобная среда для разработки на Python непосредственно в браузере, а также хостинг для этих проектов. Из плюсов — он бесплатный! Однако есть и минусы: часто приходится перезапускать проект вручную. В планах перейти на что-то более качественное и стабильное.

Также собираюсь прикрутить API с календарем, чтобы рабочие встречи, формируемые в календаре, сразу попадали в список задач.

Заключение

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

Теги:
Хабы:
+1
Комментарии9

Публикации

Работа

Data Scientist
46 вакансий
React разработчик
40 вакансий

Ближайшие события