Основной код плагина находится в файле .js, описывающем, какие действия и каким образом должен выполнять плагин. Этот файл размещается в корневой папке плагина вместе с файлами config.json и index.html.

Как это работает?

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

Для работы плагина разработчик должен определить два обязательных метода для объекта window.Asc.pluginwindow.Asc.plugin.init и window.Asc.plugin.button. После этого используется метод window.Asc.plugin.callCommand для передачи данных в редакторы с помощью встроенных функций API Генератора документов.

Если плагин работает с OLE-объектом, для управления им используется метод window.Asc.plugin.executeCommand.

Рассмотрим, как это сделано в плагине helloworld.js:

(function (window, undefined) {
    window.Asc.plugin.init = function () {
        this.callCommand(function() {
            var oDocument = Api.GetDocument();
            var oParagraph = Api.CreateParagraph();
            oParagraph.AddText("Hello world!");
            oDocument.InsertContent([oParagraph]);
        }, true);
    };
    window.Asc.plugin.button = function (id) {
    };
})(window, undefined);

При инициализации плагина (window.Asc.plugin.init = function () {…})редактор формирует абзац с фразой «Hello World», а затем использует API Генератора документов для создания документа с этим текстом (с помощью метода window.Asc.plugin.callCommand — this.callCommand(function() {…})).
Примечание: Пожалуйста, обратите внимание, что функции Генератора документов уже включены в редакторы: это то, как плагины взаимодействуют с редакторами. Отдельная версия Генератора документов потребуется, только если вы хотите создать документ, не используя редакторы.
Единственная кнопка «OK» (window.Asc.plugin.button = function (id) {…}) используется для создания текста и завершения работы с плагином.

Таким же образом можно создать любой другой плагин. В настоящее время плагины поддерживают не только передачу текста или форматированного текста в редакторы, но и встраивание OLE-объектов (например, плагин YouTube, встраивающий видео с YouTube на страницу редактора).