Гайд по написанию макросов на JavaScript в «Р7-Офис»
При работе с документами большое значение имеет автоматизация часто выполняемых операций — когда данных много, ручное выполнение некоторых процессов может занимать достаточно времени. Ускорить работу и повысить ее эффективность можно с помощью макросов. Разберемся, что это такое, и как они работают на примере офисного пакета «Р7-Офис».
Что такое макросы
Макросы — самописные программные скрипты, которые позволяют автоматизировать различные операции, в основном, рутинные. Можно создавать макросы под свои задачи, чтобы сделать работу максимально удобной.
В «Р7-Офис» поддержка макросов реализована для работы с документами разных типов — таблицами, текстовыми документами и даже презентациями. Макросы есть во многих сервисах, но в «Р7-Офисе» они все же уникальны, так как используют синтаксис JavaScript и нотацию сценариев API Р7 Document Builder. JavaScript выбран по нескольким причинам:
- Кроссплатформенность. JavaScript стабильно работает на всех платформах и устройствах. Код, написанный на JavaScript не надо постоянно допиливать с помощью костылей под каждую отдельную реализацию. Написал раз и пользуешься.
- Простота. JavaScript — довольно простой и понятный в освоении язык программирования. Его легко использовать, даже если нет глубокой компетенции в программировании.
- Безопасность. В «Р7-Офис» макросы представлены простым кодом, у которого нет прямого доступа к системе. Макрос запускается в одном окне с редактором, поэтому не влияет на безопасность и загруженность устройства.
Можно ли скрыть макросы в «Р7-Офис» от других пользователей
Макросы, написанные в «Р7-Офис», нельзя скрыть от других пользователей. Однако есть другая доступная возможность: любой макрос можно пометить как автоматически выполняемый при открытии документа. Это можно сделать в редакторе макросов, который находится в «Р7-Офис» во вкладке «Плагины» — «Макросы» — кнопка «Автостарт». При открытии документа с макросом, который помечен функцией «Автостарт», макрос будет выполняться автоматически.
Кроме того, пользователи «Р7-Офис» могут самостоятельно установить уровень безопасности запуска макросов. Для этого в редакторах текстов, таблиц или презентаций нужно зайти во вкладку «Файл» —«Дополнительные параметры» — «Настройки макросов». Здесь можно выбрать один из 3-х вариантов: «Отключить все», «Показывать уведомление» или «Включить все».
Функция «Отключить все» означает, что при открытии документа с макросами внутри последние запускать запрещено. Функция «Включить все» имеет противоположное значение: при открытии документа с макросами они будут запускаться автоматически. Третья функция «Показывать уведомление» означает, что при открытии документа с макросами на экран будет выводиться сообщение о том, что в документе есть макросы. В этом случае можно будет на свое усмотрение позволить или запретить макросам запуститься.
Создание макросов в «Р7-Офис»
Алгоритм работы с макросами в редакторах «Р7-Офиса» сделан просто, поэтому использовать макросы смогут как опытные пользователи, так и новички.
Алгоритм создания собственного макроса сведен к нескольким действиям:
- Заходим в нужный редактор, например, редактор таблиц.
- Открываем вкладку «Плагины».
- Выбираем «Макросы».
- В появившемся окне нажимаем «Создать» и пишем скрипт нужного макроса.
- После написания скрипта макрос можно использовать. Для этого достаточно нажать «Выполнить».
- Для удобства макрос можно переименовать. Это особенно актуально, если в работе десятки макросов и оформление в формате «Макрос 1», «Макрос 2» и далее не информативно.
Какие функции можно автоматизировать с помощью макросов?
Написание скриптов на JavaScript практически полностью снимает ограничение по возможностям автоматизации — в «Р7-Офис» можно автоматизировать практически все, если правильно написать код.
С помощью макросов можно автоматизировать:
- форматирование текста и таблиц;
- вставку формул, диаграмм и текста;
- работу с форматом ячеек (объединение, выравнивание, расширение);
- работу со сложными данными (например, с курсами валют).
Это лишь малая часть. Более того — с учетом возможности использования макросов во всех редакторах «Р7-Офис» (таблицы, презентации, текстовые документы), этот инструмент становится универсальным и одинаково применимым, независимо от задач пользователя.
Примеры полезных макросов
В качестве примера приведем несколько простых, но востребованных макросов для работы с таблицами.
Запись данных в ячейку таблицы
В качестве примера запишем фразу «Проверка макроса» в пятую строку пятого столбца — ячейка Е5.
Код скрипта:
(function()
{
Api.GetActiveSheet().GetRange(“Е5”).SetValue(“Проверка макроса”);
})();
После ввода скрипта и нажатия кнопки «Выполнить» в таблицу будет вставлен соответствующий текст.
Подобный скрипт с внесением минимальных изменений в части содержания (вместо указанной для примера фразы) можно использовать универсально. Особенно полезен он в ситуациях, когда рабочий лист не новый, а заполнен информацией на десятки или сотни строк — иногда, зная нужную ячейку, легче ввести данные с помощью скрипта, чем искать ее среди прочей информации.
Изменение цвета ячейки
Например, «зальем» синим цветом ячейку А5.
Код скрипта:
(function()
{
Api.GetActiveSheet().GetRange(“A5”).SetFillColor(Api.CreateColorFromRGB(0, 0, 250));
})();
После ввода скрипта и нажатия кнопки «Выполнить», цвет указанной ячейки изменится на синий.
Объединение заданного диапазона ячеек
Для примера объединим все ячейки от B2 до D5.
Код скрипта:
(function()
{
Api.GetActiveSheet().GetRange(“B2:D5”).Merge(true);
})();
После ввода скрипта и нажатия кнопки «Выполнить», ячейки в каждой указанных строках диапазона будут объединены в соответствии с заданными параметрами.
Форматирование указанного диапазона ячеек в виде таблицы
Например, отформатируем в виде таблицы диапазон ячеек от A1 до G7.
Код скрипта:
(function()
{
Api.GetActiveSheet().FormatAsTable(“A1:G7”);
})();
После ввода скрипта и нажатия кнопки «Выполнить» в заданном диапазоне будет создана таблица с именованными столбцами (название которых можно поменять по своему усмотрению.
Примечательно, что скрипт одинаково работает как с пустой таблицей, так и с заполненными ячейками — все содержимое просто переносится в таблицу.
Вставка диаграммы
Для примера создадим на листе рабочей таблицы диаграмму, охватывающую диапазон ячеек от С5 до D7.
Код скрипта:
(function()
{
Api.GetActiveSheet().AddChart(“‘Sheet1’!$C$5:$D$7”, true, “bar”, 2, 105 * 36000, 105 * 36000, 5, 2 * 36000, 1, 3 * 36000);
})();
После ввода скрипта и нажатия кнопки «Выполнить» будет создана зона диаграммы. Если ячейки в заданном диапазоне пустые, диаграмма будет пустой. Если данные есть — график будет построен автоматически.
Замена шрифта во всем документе в текстовом редакторе
Для того, чтобы в текстовом документе заменить шрифт, можно воспользоваться следующим скриптом:
(function()
{
var oDoc = Api.GetDocument();
var elcount = oDoc.GetElementsCount();
for(var i = 0; i<elcount; i++){
var el = oDoc.GetElement(i);
var oTextPr = el.GetTextPr();
oTextPr.SetFontFamily(“Comic Sans MS”);
el.SetTextPr(oTextPr);
}
})();
Название шрифта здесь пишется в скобках строчке oTextPr.SetFontFamily(“Comic Sans MS”). В данном примере для всего документа выбран шрифт Comic Sans MS.
В руководстве «Р7-Офис» собрана библиотека готовых универсальных скриптов. Ознакомиться с ними можно здесь.
Как конвертировать макросы Visual Basic в JavaScript
Макросы, написанные на Visual Basic, можно легко конвертировать в JavaScript, — достаточно заменить в коде некоторые переменные. Рассмотрим конвертацию на примере скрипта для подсчета суммы значений из трех диапазонов ячеек столбца A (от А5 до А105, от А5 до А305, от А5 до А30) и выведения результатов в ячейки столбца В.
Код скрипта на Visual Basic:
Sub Example()
Dim myRange
Dim result
Dim Run As LongFor Run = 1 To 3
Select Case Run
Case 1
result = “=SUM(A5:A105)”
Case 2
result = “=SUM(A5:A305)”
Case 3
result = “=SUM(A5:A30)”
End Select
ActiveSheet.range(“B” & Run) = result
Next Run
End Sub
Этот код можно легко перенести на JavaScript для использования в Р7-Офис». После замены переменных получаем:
(function()
{
for (let run = 1; run <= 3; run++)
{
var result = “”;
switch (run)
{
case 1:
result = “=SUM(A5:A105)”;
break;
case 2:
result = “=SUM(A5:A305)”;
break;
case 3:
result = “=SUM(A5:A30)”;
break;
default:
break;
}
Api.GetActiveSheet().GetRange(“B” + run).Value = result;
}
})();
По такому же алгоритму можно конвертировать любой скрипт Visual Basic в JavaScript для последующего использования в «Р7-Офис».
Бонус: как запустить макрос по кнопке в документе
В табличном редакторе «Р7-Офис» есть возможность настроить запуск макросов по нажатию кнопки. Для этого во вкладке «Вставка» нужно выбрать в меню любую фигуру (например, прямоугольник), вставить ее в табличный документ, а затем нажать на эту фигуру правой кнопкой мыши и выбрать в открывшемся меню функцию «Назначить макрос».
Подведем итоги:
- Макросы — отличное решение для автоматизации часто повторяемых операций. Они позволяют исключить ошибки ручного ввода и избавить от рутины.
- «Р7-Офис» позволяет использовать макросы для работы с документами разных форматов — текстами, презентациями, таблицами.
- Макросы в «Р7-Офис» нельзя скрыть от других пользователей, но можно
установить уровень безопасности запуска макросов.
- Особенность макросов для «Р7-Офис» — использование синтаксиса JavaScript. Язык программирования выбран из-за удобства, простоты и кроссплатформенности.
- С помощью макросов в «Р7-Офис» можно автоматизировать большинство функций. Примеры многих макросов есть на сайте сервиса.