За межами запису: умовні розгалуження, цикли та змінні у скриптах
Макроси, що записують і відтворюють дії, — найпростіший спосіб автоматизувати повторювану роботу. Однак записаний макрос має фундаментальну властивість: він щоразу виконує ті самі дії. У реальній роботі часто потрібно змінювати поведінку залежно від ситуації, наприклад: «якщо запас дорівнює нулю, оформити замовлення» або «якщо загальна сума перевищує бюджет, показати попередження». Сам лише запис не здатний обробляти такі рішення.
Саме тут на допомогу приходять скрипти. Вони дають змогу додати до автоматизації базові елементи програмування: умовні розгалуження («якщо…, то…»), цикли (повторення) та змінні (контейнери для зберігання значень). Слово «програмування» може здаватися лячним, але ці елементи лише надають форми повсякденним рішенням, і зрозуміти їх зовсім не складно. У цій статті доступно пояснюються три основи скриптів як наступний крок після запису.
Умовне розгалуження (IF/ELSE): прийняття рішень
Умовне розгалуження — це механізм, за якого певні дії виконуються лише тоді, коли задану умову виконано. Блок IF виконує свій вміст тільки тоді, коли умова істинна, а ELSE відповідає за всі інші випадки. Наприклад: «Якщо на екрані є слово “Помилка”, повідомити відповідального працівника; інакше одразу перейти до наступного кроку».
Умовою може бути значення на екрані, колір певного пікселя або число, що зберігається у змінній. Людина несвідомо виконує цілу послідовність дій: дивиться на екран, оцінює ситуацію та вирішує, що робити далі. Умовне розгалуження саме й переносить цей процес прийняття рішень в автоматизацію. Достатньо написати його один раз, і надалі комп’ютер щоразу правильно прийматиме рішення замість вас.
Цикли (LOOP): повторення дій
Цикл — це механізм багаторазового повторення тієї самої дії. Він схожий на налаштування кількості відтворень макросу, але цикли у скриптах значно гнучкіші. Можна не лише вказати кількість повторень, наприклад «повторити 10 разів», а й повторювати дії залежно від ситуації: «доки у списку не закінчаться рядки» або «доки не буде виконано певну умову».
Справжня цінність циклів проявляється під час обробки великих обсягів даних. Достатньо помістити дію «обробити один запис» у цикл, і вона перетвориться на «обробити всі записи зі списку». Хоч би їх було 100 чи 1000, потрібно описати обробку лише одного запису — решту цикл перебере автоматично. Завдання, яке вручну тривало б кілька годин, із циклом достатньо описати один раз, після чого залишається лише чекати. Саме тут автоматизація починає заощаджувати не хвилини, а години.
Змінні: зберігання значень
Змінна — це «контейнер» для тимчасового зберігання значення під час виконання процесу. Лічильник (номер поточного повторення), ім’я файлу, число, зчитане з екрана, проміжний результат обчислення — якщо зберегти такі значення у змінних, їх можна повторно використовувати на наступних етапах. Наприклад, операція «зчитати значення клітинки у змінну й, якщо воно перевищує 10 000, перенести його на інший аркуш» реалізується поєднанням змінних та умовних розгалужень.
Коли разом використовуються змінні, умовні розгалуження та цикли, можливості автоматизації стрімко розширюються. «Зчитати дані (змінні), змінити обробку залежно від їхнього вмісту (умовні розгалуження) і застосувати її до всіх елементів (цикли)» — вже лише цієї комбінації достатньо, щоб охопити значну частину реальних робочих завдань. Саме тут починається «розумна автоматизація», недоступна за простого записування й відтворення.
Як створити «автоматизацію, що не зупиняється» за допомогою обробки помилок
Після опанування умовних розгалужень, циклів і змінних наступним кроком варто вивчити «обробку помилок». За тривалої роботи автоматизації непередбачені ситуації неминучі: мережа на мить розриває з’єднання, не вдається знайти файл, який мав відкритися, або зображення на екрані відрізняється від звичного. Непідготовлений до цього сценарій одразу повністю зупиниться. Якщо він виконується вночі без нагляду, робота може залишатися зупиненою до наступного ранку.
Саме тут стане в пригоді механізм обробки помилок TRY/CATCH. За його допомогою можна налаштувати такий порядок: «Якщо всередині блоку TRY станеться збій, не зупиняти весь процес, а перейти до дій, записаних у блоці CATCH: зареєструвати помилку, надіслати сповіщення, пропустити лише цей елемент і перейти до наступного тощо». Так автоматизація стає надійною: навіть якщо один елемент завершиться помилкою, решту буде оброблено до кінця. Інакше кажучи, сценарій навчається природної для людини реакції: «Якщо сталася невдача, спершу зафіксувати її, а потім рухатися далі».
Знайомство з часто використовуваними командами SCR
Сценарії SCR у makuroku містять команди, які часто використовуються в реальній роботі. Необов’язково запам’ятовувати їх усі одразу, але розуміння доступних можливостей допомагає знаходити нові ідеї: «Схоже, це теж можна автоматизувати». Розгляньмо кілька основних команд.
- • FIND_IMAGE / WAIT_IMAGE: пошук елемента на екрані за зображенням або очікування на його появу
- • IF / ELSE / LOOP: умовні розгалуження та цикли
- • SET / ADD / SUB: присвоєння значень змінним і обчислення
- • READ_FILE / WRITE_FILE: читання та запис файлів
- • HTTP_GET / POST: обмін даними із зовнішніми сервісами
- • NOTIFY / PROMPT: відображення сповіщень і запит введення від користувача
Поєднуючи ці можливості, можна реалізувати складну автоматизацію, недосяжну за допомогою простого запису: наприклад, зчитати дані з файлу, змінити обробку залежно від умов, надіслати результат до зовнішнього сервісу та повідомити про завершення. Водночас призначення кожної окремої команди просте, тому опанувати їх нескладно. Достатньо почати з потрібних команд і поступово розширювати свій набір інструментів.
Приклади автоматизації за допомогою сценаріїв
Поєднання умовних переходів, циклів, змінних і обробки помилок дає змогу створювати автоматизацію, що далеко перевершує можливості простого запису. Розгляньмо кілька конкретних прикладів. Припустімо, потрібно «по черзі відкрити всі файли в папці, перевірити їхній вміст і перемістити до іншої папки лише ті, що відповідають умовам». Це можна реалізувати, перебравши всі файли в циклі та розподіливши їх за допомогою умовних переходів. Сортування, яке вручну тривало б годину, після одноразового написання сценарію завершиться за кілька хвилин.
Інший приклад — моніторинг: «регулярно отримувати дані із сайту, порівнювати їх із попереднім значенням і сповіщати про зміни». Сценарії чудово підходять і для таких завдань. Дані отримують через HTTP, порівнюють із попереднім значенням, збереженим у змінній, а умовний перехід запускає сповіщення за наявності змін. Якщо додати виконання за розкладом, вийде система моніторингу, яка не пропустить жодної зміни без будь-яких дій із вашого боку.
На перший погляд така автоматизація може здаватися складною, проте кожен її елемент — цикли, умовні переходи, змінні, обмін даними та сповіщення — сам по собі простий. Складно «зрозуміти все одразу», а не «поєднувати елементи по одному». Почніть, наприклад, лише з умовних переходів, потім вивчіть цикли й поступово опановуйте потрібні елементи. Ви й не помітите, як навчитеся самостійно створювати досить складну автоматизацію.
Важливо не намагатися одразу написати ідеальний сценарій. Спочатку створіть мінімальну робочу версію, запустіть її та поступово виправляйте місця, що працюють не так, як потрібно. У makuroku є функція налагодження, яка в реальному часі виділяє виконуваний рядок, тож ви можете наочно бачити, «де й що зараз відбувається», і водночас удосконалювати сценарій. Спробувати, виправити й спробувати знову — саме таке повторення найшвидше допомагає опанувати сценарії.
Як зберегти читабельність сценаріїв
Робота над сценарієм не закінчується після його написання: згодом його часто доводиться перечитувати й змінювати. Тому, якщо від самого початку дбати про «читабельність», у майбутньому вам буде значно простіше. Ось кілька порад. Насамперед давайте змінним зрозумілі назви. Замість «x» або «a» використовуйте назви на кшталт «загальна сума» чи «ім’я цільового файлу», які описують вміст. Тоді навіть згодом ви одразу зрозумієте призначення обробки.
Далі додавайте коментарі до кожного логічного блоку обробки. Навіть короткі примітки на кшталт «звідси починається отримання даних» або «тут перевіряється сума» значно полегшують розуміння загального перебігу сценарію. Складну обробку також корисно розділяти на кілька невеликих сценаріїв. Набір коротких сценаріїв із різними завданнями простіше змінювати й повторно використовувати, ніж один величезний сценарій. Секрет довговічних сценаріїв — писати їх із думкою: «Чи зможе мій майбутній я це прочитати й зрозуміти?»
Як налагоджувати сценарії
Під час написання сценаріїв неминуче виникають ситуації, коли вони працюють не так, як задумано. Спокійний пошук причини в таких випадках називається «налагодженням». Основний принцип налагодження — визначити, «до якого місця все працює правильно й від якого місця поведінка починає відрізнятися від очікуваної». У makuroku є функція виділення виконуваного рядка в реальному часі та вивід PRINT, що показує проміжні значення на екрані. Завдяки цьому можна шукати причину, наочно спостерігаючи, «де й що зараз відбувається».
Для ефективного налагодження спочатку розділіть процес на невеликі частини й перевіряйте роботу кожної з них окремо. Якщо намагатися завершити все одразу, буде складно зрозуміти, де саме виникла проблема. Пишіть потроху, часто запускайте скрипт і переходьте далі лише після того, як переконаєтеся, що все працює правильно. Таке послідовне повторення зрештою дає змогу створювати скрипти найшвидше й найнадійніше. Навіть якщо виникне помилка, налагодження не буде страшним, якщо сприймати її як підказку про те, «що потрібно виправити».
Рекомендований порядок вивчення скриптів
Розгляньмо орієнтовний порядок опанування елементів скриптів. Насамперед варто вивчити умовне розгалуження (IF/ELSE). Рішення на кшталт «якщо…, то…» є основою будь-якої автоматизації. Далі переходьте до циклів (LOOP). Повторювані операції надзвичайно ефективні під час обробки великих обсягів даних. Опанувавши лише ці два елементи, ви вже зможете автоматизувати багато завдань, недоступних за допомогою простого записування дій.
Наступний етап — змінні. Механізм збереження значень у поєднанні з умовними розгалуженнями та циклами дає змогу створювати гнучкіші процеси. Опанувавши це, переходьте до обробки помилок (TRY/CATCH). Для тривалої роботи без участі людини необхідний механізм, який не дасть процесу зупинитися навіть у разі проміжного збою. Нарешті, за потреби вивчайте спеціалізовані команди для конкретних цілей, наприклад операції з файлами, обмін даними через HTTP та OCR.
Важливо не намагатися вивчити все одразу. Коли під час реальної роботи ви подумаєте: «Було б зручно вміти це робити», знайдіть відповідну функцію та спробуйте її застосувати. Такий підхід — «навчання через практичну потребу» — зрештою дає змогу найкраще закріпити знання. Замість послідовного читання підручника від початку практичніше автоматизувати поточні завдання й у процесі опановувати потрібні елементи.
На перший погляд скрипти можуть здаватися складними, але кожен їхній елемент простий, і за послідовного вивчення ви обов’язково їх опануєте. Після цього коло завдань, які ви зможете автоматизувати, значно розшириться. Почніть із записування дій, а потім зробіть перший крок у світ скриптів, додавши одне умовне розгалуження.
Плавний перехід від записування до скриптів
Тим, кому здається, що «скрипти — це складно», особливо важливо знати: писати їх із чистого аркуша не потрібно. У makuroku можна спочатку записати дії через GUI, а потім перетворити макрос на редагований SCR-скрипт. Тобто ви одразу отримаєте робочий каркас. Після цього достатньо змінити лише потрібні частини: наприклад, помістити ділянку, яку слід повторювати, у LOOP або додати IF там, де потрібно прийняти рішення.
Крім того, під час введення виконується перевірка синтаксису, тому помилки в написанні виявляються одразу. Також є функція налагодження, яка в реальному часі підсвічує поточний виконуваний рядок, даючи змогу наочно побачити, «яка частина зараз обробляється». Завдяки такій підтримці перехід від записування дій до скриптів відбувається плавно. Спочатку створіть каркас за допомогою записування, а потім поступово додавайте умови та цикли. За такого підходу навіть людина без досвіду програмування зможе самостійно створювати практичні автоматизації. У makuroku всі ці функції можна випробувати безкоштовно.
Спробувати безкоштовно
Автоматизуйте це з makuroku
makuroku записує вашу мишу та клавіатуру, а потім відтворює автоматично. Додайте SCR-скрипти та інтеграцію зі ШІ (MCP), коли потрібно більше. Усі функції безкоштовні на Windows.
Більше статей