СМИ о нас

Гайд по написанию макросов на JavaScript в «Р7-Офис»

Источник: okdk.ru

При работе с документами большое значение имеет автоматизация часто выполняемых операций — когда данных много, ручное выполнение некоторых процессов может занимать достаточно времени. Ускорить работу и повысить ее эффективность можно с помощью макросов. Разберемся, что это такое, и как они работают на примере офисного пакета «Р7-Офис».

Что такое макросы


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

В «Р7-Офис» поддержка макросов реализована для работы с документами разных типов — таблицами, текстовыми документами и даже презентациями. Макросы есть во многих сервисах, но в «Р7-Офисе» они все же уникальны, так как используют синтаксис JavaScript и нотацию сценариев API Р7 Document Builder. JavaScript выбран по нескольким причинам:

  • Кроссплатформенность. JavaScript стабильно работает на всех платформах и устройствах. Код, написанный на JavaScript не надо постоянно допиливать с помощью костылей под каждую отдельную реализацию. Написал раз и пользуешься.
  • Простота. JavaScript — довольно простой и понятный в освоении язык программирования. Его легко использовать, даже если нет глубокой компетенции в программировании.
  • Безопасность. В «Р7-Офис» макросы представлены простым кодом, у которого нет прямого доступа к системе. Макрос запускается в одном окне с редактором, поэтому не влияет на безопасность и загруженность устройства.

Можно ли скрыть макросы в «Р7-Офис» от других пользователей


Макросы, написанные в «Р7-Офис», нельзя скрыть от других пользователей. Однако есть другая доступная возможность: любой макрос можно пометить как автоматически выполняемый при открытии документа. Это можно сделать в редакторе макросов, который находится в «Р7-Офис» во вкладке «Плагины» — «Макросы» — кнопка «Автостарт». При открытии документа с макросом, который помечен функцией «Автостарт», макрос будет выполняться автоматически.

Кроме того, пользователи «Р7-Офис» могут самостоятельно установить уровень безопасности запуска макросов. Для этого в редакторах текстов, таблиц или презентаций нужно зайти во вкладку «Файл» —«Дополнительные параметры» — «Настройки макросов». Здесь можно выбрать один из 3-х вариантов: «Отключить все», «Показывать уведомление» или «Включить все».

Функция «Отключить все» означает, что при открытии документа с макросами внутри последние запускать запрещено. Функция «Включить все» имеет противоположное значение: при открытии документа с макросами они будут запускаться автоматически. Третья функция «Показывать уведомление» означает, что при открытии документа с макросами на экран будет выводиться сообщение о том, что в документе есть макросы. В этом случае можно будет на свое усмотрение позволить или запретить макросам запуститься.

Создание макросов в «Р7-Офис»


Алгоритм работы с макросами в редакторах «Р7-Офиса» сделан просто, поэтому использовать макросы смогут как опытные пользователи, так и новички.

Алгоритм создания собственного макроса сведен к нескольким действиям:
  1. Заходим в нужный редактор, например, редактор таблиц.
  2. Открываем вкладку «Плагины».
  3. Выбираем «Макросы».
  4. В появившемся окне нажимаем «Создать» и пишем скрипт нужного макроса.
  5. После написания скрипта макрос можно использовать. Для этого достаточно нажать «Выполнить».
  6. Для удобства макрос можно переименовать. Это особенно актуально, если в работе десятки макросов и оформление в формате «Макрос 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 Long
For 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-Офис» есть возможность настроить запуск макросов по нажатию кнопки. Для этого во вкладке «Вставка» нужно выбрать в меню любую фигуру (например, прямоугольник), вставить ее в табличный документ, а затем нажать на эту фигуру правой кнопкой мыши и выбрать в открывшемся меню функцию «Назначить макрос».

Подведем итоги:


  1. Макросы — отличное решение для автоматизации часто повторяемых операций. Они позволяют исключить ошибки ручного ввода и избавить от рутины.
  2. «Р7-Офис» позволяет использовать макросы для работы с документами разных форматов — текстами, презентациями, таблицами.
  3. Макросы в «Р7-Офис» нельзя скрыть от других пользователей, но можно
установить уровень безопасности запуска макросов.
  1. Особенность макросов для «Р7-Офис» — использование синтаксиса JavaScript. Язык программирования выбран из-за удобства, простоты и кроссплатформенности.
  2. С помощью макросов в «Р7-Офис» можно автоматизировать большинство функций. Примеры многих макросов есть на сайте сервиса.