За пределами записи: условные ветвления, циклы и переменные в скриптах
Макросы, записывающие и воспроизводящие действия, — самый простой способ автоматизировать повторяющуюся работу. Однако у записанного макроса есть фундаментальное свойство: он каждый раз выполняет одни и те же действия. В реальной работе часто требуется менять поведение в зависимости от ситуации, например: «если запас равен нулю, оформить заказ» или «если итоговая сумма превышает бюджет, вывести предупреждение». Одна лишь запись не способна обрабатывать такие решения.
Именно здесь на помощь приходят скрипты. Они позволяют включить в автоматизацию базовые элементы программирования: условные ветвления («если…, то…»), циклы (повторения) и переменные (контейнеры для хранения значений). Слово «программирование» может показаться пугающим, но эти элементы лишь формализуют повседневные решения, и понять их совсем несложно. В этой статье доступно объясняются три основы скриптов как следующий шаг после записи.
Условное ветвление (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.
Ещё статьи