Начало работы со скриптами JavaScript
В программное
обеспечение AlterOffice интегрирована возможность пользователям писать
макросы на нескольких языках, одним из которых является JavaScript.
Тест поддержки макросов JavaScript
Для проверки готовности системы откройте новый документ в AText. Выберите: Сервис ▸ Выполнить макрос ▸ появится диалоговое окно: «Выбор макроса» ▸ Макросы AlterOffice ▸ HelloWorld ▸ helloworld.js ▸ Выполнить
Если вы видите этот результат, ваша система может запускать макросы JavaScript
Рабочий каталог для макросов
Расположение макросов, доступные определенному пользователю. В данном случае USER
Для GNU/Linux:
/home/USER/.config/alteroffice/5/user/Scripts/javascript/Project_Name/
Для Windows:
C:\Program Files (x86)\AlterOffice\share\Scripts\javascript\Project_Name
* Где Project_Name - имя папки, в которой содержатся сам макрос JavaScript и файл parcel-descriptor.xml. Важно, имя макроса и имя папки должны совпадать.
** Указанные пути являются стандартными. В пользовательских
установках они могут быть другими. Если папки не существуют, Вы должны
создать их самостоятельно, соблюдая регистр.
Создание макросов на JavaScript
Все примеры JavaScript хранятся в виде личных макросов на локальном носителе
ПК, в отличие от сценариев JavaScript для продуктов или сценариев на основе
документов. Приводимые примеры в этом руководстве предполагают, что вы
сохраняете их в рабочем каталоге.
Так же, для корректной работы необходим файл parcel-descriptor.xml, который служит для поиска макросов на JavaScript. Он должен находится в одной директории, что и сам макрос.
Ниже пример макроса для AText , который выведет "Hello World" на листе.
Пример макроса для AText:
importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.com.sun.star.text.XTextDocument);
importClass(Packages.com.sun.star.text.XText);
importClass(Packages.com.sun.star.text.XTextRange);
oDoc = XSCRIPTCONTEXT.getDocument();
xTextDoc = UnoRuntime.queryInterface(XTextDocument,oDoc);
xText = xTextDoc.getText();
xTextRange = xText.getEnd();
xTextRange.setString("Hello World (in JavaScript/Atext)");
Пример файла parcel-descriptor.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><parcel xmlns:parcel="scripting.dtd" language="JavaScript"><script language="JavaScript"><locale lang="en"><displayname value="hello_world_atext.js"/><description>hello_world_atext.js</description></locale><logicalname value="hello_world_atext.js"/><functionname value="hello_world_atext.js"/></script></parcel>
Ниже пример макроса для ACell , который выведет "Hello World" на листе.
Пример макроса для ACell:
importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.com.sun.star.sheet.XSpreadsheetDocument);
importClass(Packages.com.sun.star.container.XIndexAccess);
importClass(Packages.com.sun.star.table.XCellRange);
importClass(Packages.com.sun.star.table.XCell);
oDoc = XSCRIPTCONTEXT.getDocument();
xSDoc = UnoRuntime.queryInterface(XSpreadsheetDocument, oDoc);
xSheetsIndexAccess = UnoRuntime.queryInterface(XIndexAccess, xSDoc.getSheets());
xSheet = xSheetsIndexAccess.getByIndex(0);
xCll = UnoRuntime.queryInterface(XCellRange, xSheet);
xCell_A0 = xCll.getCellByPosition(0,0);
xVar_A0 = UnoRuntime.queryInterface(XCell, xCell_A0);
xVar_A0.setFormula("Hello World (in JavaScript/ACell)")
Пример файла parcel-descriptor.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><parcel xmlns:parcel="scripting.dtd" language="JavaScript">
<script language="JavaScript"><locale lang="en"><displayname value="acell_hello_world.js"/><description>acell_hello_world.js</description></locale><logicalname value="acell_hello_world.js"/><functionname value="acell_hello_world.js"/></script></parcel>
Вложение:
Во вложении:
- архив: hello_world_atext.tar
-- в архиве папка (hello_world_atext), макрос (hello_world_atext.js) и файл (parcel-descriptor.xml)
- архив: acell_hello_world.tar
-- в архиве папка (acell_hello_world), макрос (acell_hello_world.js) и файл (parcel-descriptor.xml)