МОДУЛИ-ОПЕРАТОРЫ: «ЦИКЛ», «УСЛОВИЕ», «WHILE», «TRY-CATCH», «BREAK», «RETURN», «SWITCH»

Модуль «Условие»

Описываемые в этой части модули сами по себе ничего не делают, их следует использовать вместе с любыми другими. У описываемых модулей (кроме модуля «Break»), помимо привычного «Примечания», есть еще несколько параметров, обязательных для заполнения, но нет отдельного окна с настройками.

Модуль «Условие» позволяет в зависимости от указанного условия выполнять те или иные действия. Условием может быть любое выражение, которое приводится к значению «True» или «False».

Интерфейс модуля

Модуль состоит из полей «Примечание» и «Условие». Действия, которые должны выполняться при значении условия «True», добавляются в раздел «THEN», при значении «False» - в раздел «ELSE». Действия добавляются в модуль перетаскиванием их из меню или другого места рабочей области.

Рис. 1. Условный модуль

Поле «Примечание» предназначено для внесения комментария от разработчика робота.

Поле «Условие» заполняется по правилам языка программирования JS. Для пользователей, незнакомых с этим языком, предлагается помощь в виде «Конструктора условий», доступная по кнопке справа от условия -

Конструктор условий

Конструктор условий позволяет составлять условия в соответствии с синтаксисом языка JS.

Рис. 2. Конструктор условий

Добавление

Для того чтобы составить условие, необходимо заполнить оба операнда, выбрать тип операндов (строки или числа), выбрать оператор между ними из предложенного и нажать на кнопку «Добавить»:

Рис. 3. Добавление условий

Список операций для строк и для чисел отличается, поэтому сначала выберите тип операндов, а лишь затем операцию.

Связывание

Несколько условий можно связать с помощью логического «И» либо логического «ИЛИ».

Делается это следующим образом – удерживая клавишу Shift, выбираются несколько условий, которые должны быть соединены одним оператором, затем нажимается кнопка с соответствующим логическим оператором:

Рис. 4. Связывание условий

Рис. 5. Результат связывания условий

Символ «||» означает логическое ИЛИ, символ «&&» - логическое И.

Разъединение

Условия, состоящие из нескольких простых условий, то есть те, которые используют логическое И или ИЛИ, можно разъединить, нажав на соответствующую кнопку. Разъединение происходит по логическим операторам.

Рис. 6. Разъединение условий

Рис. 7. Результат разъединения условий

Сохранение

Для сохранения условия необходимо нажать на кнопку «Сохранить». Получившиеся условие вставится в поле «Условие» условного модуля:

Рис. 8. Сохранение условия

Рис. 9. Отображение условия

Законченный модуль может выглядеть следующим образом:

Рис. 10. Заполненный модуль «Условие»

Сворачивание

Для уменьшения занимаемого места в рабочей области проекта, можно свернуть каждый блок данного модуля по кнопке «Свернуть».

Рис. 11. Свернутый блок ELSE

Рис. 12. Свернутые THEN и ELSE

Модуль «Цикл»

Модуль «Цикл» применяется для неоднократного (цикличного) выполнения набора действий. Действия, добавленные в модуль, будут выполняться до тех пор, пока не пройдёт указанное в настройках количество итераций.

Интерфейс модуля

Модуль состоит из полей «Примечание», «Количество итераций» и «Переменная». Действия, которые должны выполняться в цикле, добавляются в блок, расположенный в нижней части модуля. Действия добавляются в модуль перетаскиванием их из меню или другого места рабочей области.

Модуль выглядит следующим образом:

Рис. 13. Вид модуля

Поле «Примечание», как и во всех других модулях, служит для внесения комментария от разработчика робота.

Остальные поля присущи только этому модулю.

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

Поле «Переменная» - переменная, в которой будет храниться число – текущий шаг цикла. Цикл начинается с нуля.

Пример заполненного цикла представлен на рисунке 14.

Рис. 14. Пример заполнения модуля

По кнопке «Свернуть» можно свернуть действия цикла для более компактного отображения команды.

Рис. 15. Свернутый вид модуля

Модуль «Break»

Для «аварийного» выхода из простого цикла используют модуль «Break». Например, в цикле ведется поиск конкретного изображения, и если такое изображение найдётся, следует нажать на него, считать какие-либо данные и перейти к следующему действию, иначе – выйти из цикла и не проигрывать следующее действие. Для такого сценария необходимо создать цикл, в котором будет модуль «Условие», в одной из веток которого будет находиться модуль «Break» (модуль «Break» представлен самым последним модулем на примере):

Рис. 16. Пример использования модуля «Break»

Модуль «Break» не требует настройки, но может применяться только внутри модуля «Цикл».

Модуль «Return»

Бывают ситуации, когда при некотором условии необходимо завершить работу робота, например, нужно обработать письмо, которое должно прийти на почту, а оно не пришло. Для таких целей существует модуль «Return».

Рис. 17. Внешний вид модуля

Данный модуль заканчивает работу всего робота и не требует настройки. Может использоваться в любом месте.

При написании роботов-функций для их последующего использования в одноименном модуле с помощью модуля Return происходит возврат результирующей переменной в основного робота. Для этого необходимо открыть модуль Return двойным нажатием и ввести название возвращаемой из функции переменной.

ПРИМЕР 1.

На рисунке ниже представлен пример использования модуля: пусть с помощью модуля «Считать письма» считываются все письма за определенный промежуток времени. Все темы письма и их содержания необходимо внести в Excel-файл. Но что, если этих писем нет? Для этого проверяем наличие писем, и, если их нет, робот прекратит работу, иначе – продолжит.

Рис. 18. Пример использования модуля «Return»

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

ПРИМЕР 2.

При использовании в роботе-функции: пусть существует робот-функция для обработки различных, но однотипных Excel-файлов. На вход подается путь до файла, а выходом будет являться путь до нового, обработанного (или консолидированного) файла.

Рис. 19. Пример возврата значения модулем «Return»

Модуль «Continue»

Модуль «Continue» позволяет перейти к следующей итерации цикла без использования модуля «Условие» или других методов ветвления алгоритма. Модуль не требует дополнительной настройки. Единственное требование – модуль должен находиться внутри модуля «Цикл» или внутри любого модуля, который в свою очередь находится внутри цикла (вложенность модулей не ограничена).

Рис. 20. Модуль «Continue»

ПРИМЕР

Допустим, что необходимо провести действия с файлом, но лишь в том случае, если он присутствует в определенной папке. Для этого достаточно в начале цикла проверить наличие файла и, если его нет, то перейти к следующей итерации цикла.

Рис. 21. Пример работы с «Continue»

Отличие от работы с условием лишь в лучшей читабельности алгоритма (то есть, без модуля Continue пришлось бы все действия над файлом делать внутри ветки ELSE модуля «Условие»).

Модуль «While»

Модуль «While» (цикл с условием) выполняет добавленные в него действия до тех пор, пока указанное условие возвращает значение «True».

Интерфейс модуля

В окне модуля расположены поля «Примечание» и «Условие». В блоке, расположенном в нижней части модуля, следует располагать действия, которые требуется выполнять в цикле.

Рис. 22. Вид модуля

Поле «Условие». В поле вводится условие, как и в модуле «Условие», которое необходимо писать в соответствии с синтаксисом языка JS, поэтому здесь присутствует кнопка, открывающая «Конструктор условий» (описание дано в главе "Модуль «Условие»").

Добавление действий в модуль происходит с помощью перетаскивания из меню модулей или из рабочей области проекта.

Рис. 23. Добавление действий

При нажатии на кнопку «Свернуть» действия, описанные в цикле, сворачиваются для более компактного отображения команды.

Рис. 24. Свернутый вид модуля

Модуль «Try/Catch»

Данный модуль позволяет обрабатывать ошибки, которые могут возникнуть в процессе выполнения некоторого блока модулей.

Рис. 25. Внешний вид модуля Try/Catch

Модуль состоит из двух блоков – TRY и CATCH. Блок TRY содержит набор модулей или целого робота, который должен выполниться, блок CATCH содержит набор модулей на случай, если произойдет ошибка исполнения модулей блока TRY.

Модуль имеет два текстовых поля, первое – поле «Примечание», в которое можно ввести описание модуля для более удобной навигации по роботу, а второе поле предназначено для сохранения возникшей в модуле TRY ошибки. Так как есть возможность узнать, какая ошибка возникла, каждую возможную ошибку можно корректно обработать в блоке CATCH.

ПРИМЕР.

Пусть стоит задача – скачать письмо с почты с определенным названием вложения в заранее заданную папку и обработать это вложение модулем Excel, причем в модуле Excel путь до файла будет всегда одинаковым. Например, вложение называется «Отчет за день», путь до папки «C:\Reports», тогда в Excel будет всегда открываться файл «C:\Reports\Отчет за день.xlsx», а вложения с почты всегда будут скачиваться в вышеназванную папку.

Если письмо с необходимым вложением еще не пришло, то модуль Excel выдаст ошибку «Не удалось открыть документ C:\Reports\Отчет за день.xlsx». В таком случае необходимо как-то обработать эту ошибку, предложить пользователю запустить робота позже, или сказать ему подождать в течение некоторого времени и попробовать снова.

Для обработки ошибки с выводом информационного окна необходимо добавить модуль «Try/Catch», где в блоке TRY будут содержаться модули считывания письма и Excel, а в блоке CATCH модуль «Интерфейс» для вывода пользовательского окна.

Рис. 26. Пример использования модуля «Try/Catch»

В результате работы такого робота будет либо стандартное сообщение «Скрипт отработал успешно!», если письмо было на почте, либо окно с текстом «Письмо еще не пришло» в ином случае. В переменной v.error будет содержаться текст «Не удалось открыть документ C:\Reports\Отчет за день.xlsx».

Рис. 27. Пример обработки ошибки – окно с информацией

Модуль «Switch»

Оператор Switch – это оператор выбора, который выбирает для выполнения один раздел case из списка кандидатов, сравнивая их с выражением, указанным в самом switch. Аналогичен нескольким модулям «Условие», как если бы необходимо было сравнить одно значение с несколькими другими и для каждого был бы отдельный набор действий для выполнения, то есть он используется в тех случаях, когда развилок условий больше двух, но сравнение идет с одним и тем же значением.

Внутри блока Switch могут быть только блоки Case и наоборот – блоки Case могут быть только внутри блока Switch.

Интерфейс модуля

Модуль Switch имеет поле «Условие», в которое записывается переменная, с которой в дальнейшем будут сравниваться подмодули case для выбора необходимого алгоритма. По кнопке «Добавить» добавляются эти самые подмодули.

Рис. 28. Модуль «Switch»

После нажатия на кнопку «Добавить», внутри модуля появится блок Case, который может быть использован только внутри блока Switch. Блоки Case также содержат поле «Условие», но в этом случае в них указывается ожидаемое значение переменной, указанной в модуле Switch. Если переменная из Switch будет равна значению Case, то этот Case будет выполняться, остальные блоки Case выполнены не будут (даже если они содержат то же значение).

Рис. 29. Модули «Switch – Case»

Внутри блоков Case располагаются любые модули программы, подобно модулю «Группа».