- PVSM.RU - https://www.pvsm.ru -
До этого я никогда не сталкивался с CRM "Мегаплан" и не знал, что она существует. Один мой хороший знакомый предложил мне подработку, сказал, что один его знакомый ищет программиста, чтобы написать небольшую программу или скрипт для автоматизации работы.
Было сказано, что нужно из какой-то системы получить данные по API, обработать их и вывести в XLS. Мне предложение показалось интересным, я созвонился с Заказчиком и договорился о встрече.
Сразу хочу сказать, что я никак не связан с самим Мегапланом и не собираюсь его рекламировать.
Заказчик — предприятие, в котором примерно 50 сотрудников.
Сотрудники, проекты и задачи заведены в CRM.
Сотрудники выполняют поставленные задачи. При этом в комментариях к задаче они указывают количество отработанных часов. Кроме того, при выполнении задачи тратятся "ядро-часы" (часы машинного времени).
Они также указываются в каждой задаче в отдельном поле.
Заказчику нужно формировать отчёт в XLS по данным из Мегаплана за указанный временной период.
По каждому проекту, по каждой задаче, нужно знать, сколько было потрачено рабочих часов и "ядро-часов".
Т.е. затраты группируются вначале по проектам, далее по задачам, потом уже по каждому сотруднику.
Примерный вид отчёта представлен на рисунке ниже.

Получить такой отчёт средствами Мегаплана заказчик не смог. Поэтому было принято решение пригласить стороннего разработчика для разработки программы/скрипта, который решит задачу.
Срок: 1 неделя.
Цена: 20 тыс.руб.
Бюджет небольшой, информации в Интернете об опыте использования Мегаплан API — ещё меньше. Нашёл здесь, на Хабре, вот эту статью [1], и она совсем не вызывала оптимизма. Пахло проблемами, деньги были не сильно нужны, но было интересно и хотелось помочь людям в их рутине. Я согласился.
Первоначально было желание взять Python, почитать документацию по API и написать скрипт,
который запрашивает все необходимые данные из Мегаплана по API, обрабатывает их и выводит в XLSX.
Однако проблемы с API начались с самого начала. Выяснилось, что для каждого запроса нужно
вычислять значение X-Authorization header-а по некоторому алгоритму.
Т.е. просто изучать API с помощью curl или httpie не получится.
Соответственно, я понял, что нужно "срезать угол" и поискать какую-нибудь готовую библиотеку для работы с Мегаплан API. Меня интересовали, в основном, библиотеки для Python и Javascript. На github я нашёл следующие библиотеки [2]. Большинство из них — это мёртвые проекты, есть ещё много "поделок" на PHP.
Выбирать долго не пришлось, я остановился на библиотеке для языка javascript
megaplanjs [3].
Во-первых, я использую javascript каждый день для frontend.
Во-вторых, было интересно разработать что-нибудь для командной строки на javascript.
В-третьих, я смог быстро установить библитеку (спасибо npm), скопировать пример из
документации и… моё приложение уже может аутентифицироваться в Мегаплане и
получать список проектов. Ура!
Я смог решить поставленную задачу, но потратил на неё намного больше времени, чем планировал.
Это время не оплачивалось, заказчику просто нужен был результат. Как он достигается, ему не интересно.
Раза 3 я обращался в службу поддержки. Не сразу, но помогли. Спасибо.
Тем разработчикам, которые только подумывают заняться subj-ем, я рекомендую лучше оценивать свои риски и закладывать больше времени на разработку.
Сейчас у Мегаплана появилась новая версия API — версия 3 (я использовал версию 1, версии 2 не было?). Я посмотрел версию 3, не нашёл того, что мне было нужно (проекты, задачи, сотрудники). Может быть, версия 3 — это просто дополнение к версии 1, а не замена. Ещё читал, что обещали упростить работу с API — не нужно будет формировать для каждого запроса X-Authorization header.
Исходный код своего скрипта я выложил на github [4].
Если понадобится, его можно использовать в качестве примера для быстрого старта своего приложения.
Всем удачной разработки, happy coding!
Автор: azakharo
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/278400
Ссылки в тексте:
[1] статью: https://habrahabr.ru/sandbox/82791/
[2] следующие библиотеки: https://github.com/search?q=megaplan&type=Repositories
[3] megaplanjs: https://github.com/zxqfox/megaplanjs
[4] github: https://github.com/azakharo/megaplan_reports
[5] Источник: https://habrahabr.ru/post/353954/?utm_source=habrahabr&utm_medium=rss&utm_campaign=353954
Нажмите здесь для печати.