Power Automate Desktop

Feb 08, 2023 18:07


Повилась интересная задача: загружать каждую ночь на сайт файл через веб-интерфейс. Других способов пока нет, поэтому надо что-то придумать. В результате изысканий найден вариант с использованием бесплатной системы автоматизации от Microsoft "Power Automate Desktop" .



Бесплатна она условно, потому что многие нужные функции как то: расписание запуска (шедулер) и запуск на заблокированном компьютере доступны только для бизнес-аккаунтов. И вообще, она работает через своё микрософтовское облако, так что учётка обязательна. Но у бесплатных аккаунтов есть указанные выше ограничения. Без интернета оно работать не будет, потому что запускается всё равно из облака, хотя имеет клиентскую часть. Каждый раз, когда редактируешь свой «поток» как они его называют (Flow), а по нашему просто скрипт, он сохраняется в облако и потом при запуске тоже загружается из него, поэтому если что-то отредактировал но не нажал кнопку сохранить, поведение будет непредсказуемо. Вообще система очень мощная, если у вас есть какие-то рутинные операции, то это то что нужно. Можно, например, бэкапы с ней настроить, хотя с ограничениями с шедулером так себе идея. Но вот в качестве макросов удобно. Представьте что делаете макрос для Excell, который распространяется на всю систему. В работе с сайтами через браузер есть тонкости. Там есть отдельные функции для работы с браузером и отдельные для работы с окнами. Главное, при записи последовательность действий чтобы система правильно их выбрала, иначе будет работать не так как ожидаешь. Запись действий выглядит как запись макросов в том же Excell, самое интересное, то есть отладка, потом :) Но не все действия можно смоделировать нажатием кнопок на экране, да и не всегда это оптимально. Например, отправить оповещение на почту можно одной командой, а не запуском аутлука, хотя, можно и так. Для основных действий в системе есть свои отдельные команды , также есть ветвления по условиям и отработка ошибок, что весьма ценно.

Вот окошко написания скрипта :



Русским языком там и не пахнет, хотя пахнет немного на скриншоте - это названия кнопок в окнах. Но и пофиг, все предельно понятно и так.

Пришлось обходить ограничения костылями и подпорками :)

В результате: создана отдельная ВМ с Windows 10 , заведен отдельный пользователь под которым будет все работать, не имеющий админских прав. Система запускается через VNC или в консоли ВМ (через РДП работать не будет, только если не закрывать сессию), запускается и крестиком закрывается окошко, сессия остается открытой.  Само собой, по питанию надо отключить всякие засыпания. Сам скрипт достаточно понятен. Для обхода отсутствия шедулера скрипт крутится в бесконечном цикле, проверяя наличие определенного файлика в папке. Штатный виндовый шедулер создает файлик по расписанию, а скрипт в конце работы его стирает.  Краткий алгоритм работы скрипта (текст привести не могу, потому что его просто не существует): скрипт работает в бесконечном цикле с паузой 10 минут между проходами (чтобы не загружать компьютер). В начале делается проверка на существование файла trigger.txt, который создается по ночам с помощью шедулера. При успешной проверке, нашим скриптом запускаем браузер с адресом нужного сайта, вводим логин и пароль, нажимем все нужные кнопочки (смотрится прикольно, но настраивается муторно), открываем страницу загрузки файла, выбираем нужный файл, делаем скриншот после загрузки и посылаем его по почте. Также скрипт должен отрабатывать случай когда сайт не принимает файлы (есть там такое "попробуйте через 30 секунд"). Для этого есть условные операторы с проверкой наличия в окне или в браузере определенных элементов (картинки, кнопки, ссылки и т.п.), тут пришлось повозиться при отладке.  В этом случае наш скрипт посылает письмо со скриншотом ошибки, сообщает, что сервер не принимает файл и запускает новый цикл с задержкой 20 минут. В конце скрипт стирает файл trigger.txt и файл скриншота, разлогинивается на сайте, закрывает браузер и возвращается к началу.  Также в начале скрипта есть проверка, если мы не разлогинились и сайт сразу откроется, то скрипт разлогинивает принудительно и возвращается к окну авторизации. Тут тоже долго не хотело работать как надо.

Изначально хотел сделать на аналогичной системе WinAutomation, но она работает хуже (ещё менее предсказуема) и настраивается ну очень уж мудрёно, например так и не смог заставить отрабатывать нажатие кнопки на сайте, под которой не ссылка, а JavaScript. А так она и автономная и шедулер встроенный имеет, только платная :)  Но может, кого-то устроит. Кстати, Power Automate этот достаточно глючный и на всегда делает то, что от него ожидаешь. Но для автоматизации различных рутинных действий штука хорошая. И да, скрипты из него нельзя сохранить, так в облаке и лежат, можно скриншот только сделать :)

power automate, microsoft, Автоматизация, windows

Previous post Next post
Up