13

Ответ на пост «Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста»

У гугла работа с таблицами через API - это дикие танцы с бубном получения каких-то прав через консоль облачных сервисов, и сами методы тоже сложновато реализованы.
Грубо говоря, для простой задачи сама логика займет 5-10 строк, а авторизация и служебные штуки чисто для гугла - строк 50, блин.

Однако, гугл-таблицы очень удобный инструмент и даже при работе со сторонними API есть решение:
Google App Scripts - встроенные скрипты гугл-доков.

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

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

411

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста

В своё время на Пикабу я начал сидеть благодаря рассказам о своей работе от совершенно разных людей. Сам я что-то давно про работу не писал. Щас напишу!

В моём отделе у инженера, занимающегося ремонтом оборудования, есть два состояния:

Паять

Не паять.

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

Сразу оговорюсь:

  1. Этот проект интересен в первую очередь мне. Инженерам, труд которых он оптимизирует, всё равно. Руководству презентую его, когда обкатаю, а может к тому времени всё вообще изменится, и не презентую вовсе. Из этого следует, что:

  2. Всё делается на моём энтузиазме, в мои обеденные перерывы, без привлечения других отделов и без любых денежных вложений.

  3. Я осознаю, что инструменты, которые я использую, не предназначены для данного функционала, и решения получились где-то черезжопные.

Итак, от какой точки мы пляшем:

По результатам ремонта инженер должен четыре раза отчитаться:

  1. Закрыть заявку в 1С.

  2. Сделать запись в журнале выполненных работ/передачи смен, так как модуль, используемый в 1С катастрофически неинформативен, и туда, в силу истерически сложившихся причин, попадают не все ремонты.

  3. Написать о выполненном ремонте в специальный чат в ватсапе, в котором, в силу истерически сложившихся причин, ведётся вся коммуникация внутри завода.

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

План значится такой. Работа в 1С сейчас на мне. Там я могу действовать на основании оперативной информации с поля, которая живёт в журнале.

Журнал, мы начали вести аж в 2018 году, когда кто-то из электриков начал мечтать, что вот, как удобно бы было вести записи в электронном виде, а мы такие: а давай вести.

Начинался он вот так:

И к началу 2023 имел такой вид:

Далее мы пойдём по пути физиков, которые сначала объединили электрические и магнитное взаимодейстивие, а потом начали соединять полученное с ядерными силами в одну теорию.

Сперва я научил таблицу собирать чек-лист из журнала. Для этого мне понадобились всего две функции «FILTER»: по дате и по имени сотрудника.

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

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

Я полез курить формы. И наткнулся на JotForms. Боже, как они восхитительны. Там такая система условных переходов и автозаполнений, а ещё интеграция со всем на свете, что на них можно запустить Doom, наверное. Но ограничение в 100 заявок для бесплатного использования немного ставят на этой затее крест.

Разумеется, я, как любой нормальный человек, инструкцию читаю, когда всё уже перестаёт работать. Систему отчёта на JotForms я полностью реализовал и запустил, сука. Потом, когда лимит был превышен, пришлось объяснять людям, что факир был пьян, и мигрировать на GoogleForms. Там есть система подключаемых модулей, есть в чём покопаться и сперва всё выглядит архисложно и не так фильдиперстово, но с точки зрения человека, который эту форму будет заполнять, вроде не особо много разницы.

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

Следущая задача: научиться читать данные из таблицы. Вот это было самое сложное. Чтобы авторизоваться и начать пользоваться Google API мне пришлось пошагово выполнять какие-то действия в консоли разработчика Google, которые  я нашёл в статье на хабре, смысл которых не понимаю и повторить, если что-то слетит точно не смогу. Надо заходить в одни и те же окна, чото копировать, назначать себе какие-то права и так по кругу. Таких кругов, по ощущениям, нужно сделать писят, не меньше. Никому не советую.

Потом учимся работать с ватсяпом. Тут тоже засада, ибо сами они ботоводство не поощряют, средства для него  предоставляют неохотно и за большие деньги и, как следствие, в инете можно найти фирмы, которые вам слепят бота и будут его поддерживать, но блин, как я объясню руководству, что надо тут заплатить, чтобы реализовать мой пет-проект.

Короче. Условно-бесплатные API для ватсапа есть. Просто они не на первой странице поиска, а на второй.

Дальше проще.

Пишем функцию, которая умеют читать строку из таблицы, функцию которая умеет отсылать сообщение в чат ватсапа, функцию обратного отсчёта, чтобы было видно, что наша программа не повисла и чтобы она стучалась в гугль не постоянно а с интервалом в 10 секунд, например. И цикл, который проверит первую функцию, что она не опухла или как, и найдя новые данные запустит вторую. Добавим повторную авторизацию в случае потери связи и пробуем запустить. Ловим баги, пробуем запустить, ловим баги, пробуем запустить, так до получения удовлетворения.

Кодить я не умею, решения мои наверняка неоптимальные, но оно запустилось. И глядите, это даже лайкает кто-то!

Показать полностью 7
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества