Элемент FunctionFileFunctionFile element

Указывает файл с исходным кодом для операций, доступных через те команды надстройки, для выполнения которых используется функция JavaScript, а не отображается пользовательский интерфейс. Элемент FunctionFile является дочерним для DesktopFormFactor или MobileFormFactor. Атрибуту resid элемента FunctionFile присваивается значение атрибута id элемента Url в элементе Resources. Последний содержит URL-адрес HTML-файла, который содержит или загружает все функции JavaScript, используемые для выполнения команд надстройки без пользовательского интерфейса, как определено элементом Control.Specifies the source code file for operations that an add-in exposes through add-in commands that execute a JavaScript function instead of displaying UI. The FunctionFile element is a child element of DesktopFormFactor or MobileFormFactor. The resid attribute of the FunctionFile element is set to the value of the id attribute of a Url element in the Resources element that contains the URL to an HTML file that contains or loads all the JavaScript functions used by UI-less add-in command buttons, as defined by the Control element.

Ниже приведен пример элемента FunctionFile.The following is an example of the FunctionFile element.

<DesktopFormFactor>
  <FunctionFile resid="residDesktopFuncUrl" />
  <ExtensionPoint xsi:type="PrimaryCommandSurface">
    <!-- information about this extension point -->
  </ExtensionPoint>

  <!-- You can define more than one ExtensionPoint element as needed -->

</DesktopFormFactor>

Код JavaScript в HTML-файле, на который указывает элемент FunctionFile, должен вызывать Office.initialize и определять именованные функции, принимающие один параметр — event.The JavaScript in the HTML file indicated by the FunctionFile element must call Office.initialize and define named functions that take a single parameter: event. Функции должны использовать API item.notificationMessages, чтобы сообщать пользователю о ходе выполнения, успешном завершении или ошибке.The functions should use the item.notificationMessages API to indicate progress, success, or failure to the user. Он также должен вызывать метод event.completed после выполнения.It should also call event.completed when it has finished execution. Имена функций используются в элементе FunctionName для кнопок без пользовательского интерфейса.The name of the functions are used in the FunctionName element for UI-less buttons.

Ниже приведен пример HTML-файла для определения функции trackMessage.The following is an example of an HTML file defining a trackMessage function.

Office.initialize = function () {
    doAuth();
}

function trackMessage (event) {
    var buttonId = event.source.id;    
    var itemId = Office.context.mailbox.item.id;
    // save this message
    event.completed();
}

В примере кода ниже показано, как внедрить функцию, используемую элементом FunctionName.The following code shows how to implement the function used by FunctionName.

// The initialize function must be run each time a new page is loaded.
(function () {
    Office.initialize = function (reason) {
        // If you need to initialize something you can do so here.
    };
})();

// Your function must be in the global namespace.
function writeText(event) {

    // Implement your custom code here. The following code is a simple example.

    Office.context.document.setSelectedDataAsync("ExecuteFunction works. Button ID=" + event.source.id,
        function (asyncResult) {
            var error = asyncResult.error;
            if (asyncResult.status === "failed") {
                // Show error message.
            }
            else {
                // Show success message.
            }
        });
    // Calling event.completed is required. event.completed lets the platform know that processing has completed.
    event.completed();
}

Важно!

Вызов метода event.completed означает, что событие успешно обработано.The call to event.completed signals that you have successfully handled the event. Если функция вызывается несколько раз, например при многократном выборе одной команды надстройки, все события автоматически помещаются в очередь.When a function is called multiple times, such as multiple clicks on the same add-in command, all events are automatically queued. Первое событие запускается автоматически, тогда как остальные ожидают в очереди.The first event runs automatically, while the other events remain on the queue. Когда функция вызывает метод event.completed, для нее запускается следующий вызов в очереди.When your function calls event.completed, the next queued call to that function runs. Если вы не реализуете вызов event.completed, функция не будет работать.You must call event.completed; otherwise your function will not run.