Настройка надстройки Office для использования общей среды выполнения
Важно!
Общая среда выполнения поддерживается только в некоторых приложениях Office. Дополнительные сведения см. в статье Наборы обязательных элементов общей среды выполнения.
Вы можете настроить надстройку Office для выполнения всего кода в одной общей среде выполнения. Благодаря общей среде выполнения вы сможете улучшить координацию между надстройками и получить доступ к DOM и CORS из всех частей надстройки. Вы также получите доступ к дополнительным функциям, таким как выполнение кода при открытии документа или активация кнопок ленты в определенных контекстах. Чтобы настроить надстройку для использования общей среды выполнения, следуйте инструкциям, приведенным в этой статье.
Создание проекта надстройки
Если вы запускаете новый проект, используйте генератор Yeoman для надстроек Office, чтобы создать проект надстройки Excel, PowerPoint или Word.
Совет
Если вы используете генератор Yeoman для создания пользовательских функций в Excel, выберите следующие параметры:
-
Тип проекта:
Excel Custom Functions using a Shared Runtime
-
Тип скрипта:
JavaScript
Если надстройка использует только манифест надстройки, можно также выполнить действия, описанные в этой статье, чтобы обновить проект Visual Studio для использования общей среды выполнения. Однако вам может потребоваться обновить схемы XML для манифеста. Дополнительные сведения см. в статье Устранение ошибок разработки с надстройками Office.
Настройка манифеста
Выполните следующие действия, чтобы настроить новый или существующий проект для использования общей среды выполнения. В этих шагах предполагается, что вы создали проект с помощью генератора Yeoman для надстроек Office. Выберите вкладку для типа манифеста, используемого надстройкой.
Примечание.
Реализация общей среды выполнения с унифицированным манифестом для Microsoft 365 доступна в общедоступной предварительной версии для разработчиков. Его не следует использовать в рабочих надстройках. Мы приглашаем вас опробовать его в средах тестирования или разработки. Дополнительные сведения см. в статье Схема манифеста общедоступной предварительной версии приложения для разработчиков.
Откройте проект надстройки в Visual Studio Code.
Откройте файл manifest.json .
Добавьте следующий объект в массив extensions.runtimes. Обратите внимание на следующие особенности этой разметки.
- Набор требований SharedRuntime 1.1 указан в объекте requirements.capabilities. Это позволяет настроить надстройку для запуска в общей среде выполнения на поддерживаемых клиентах. Список клиентов, поддерживающих набор обязательных элементов SharedRuntime 1.1, см. в разделе Наборы обязательных элементов для общей среды выполнения.
- Для идентификатора среды выполнения задается описательное имя SharedRuntime.
- Свойство "время существования" имеет значение "long", чтобы надстройка могла воспользоваться преимуществами таких функций, как запуск надстройки при открытии документа, продолжение выполнения кода после закрытия области задач или использование CORS и DOM из пользовательских функций. Если в этом примере для свойства задано значение short, надстройка запустится при нажатии одной из кнопок ленты, но она может завершить работу после запуска обработчика ленты. Аналогичным образом надстройка запустится при открытии области задач, но может завершить работу после закрытия области задач.
"runtimes": [ "requirements": { "capabilities": [ { "name": "SharedRuntime", "minVersion": "1.1" } ] }, "id": "SharedRuntime", "type": "general", "code": { "page": "https://localhost:3000/taskpane.html" }, "lifetime": "long", "actions": [ ... ] ]
Сохраните изменения.
Настройка файла webpack.config.js.
Файл webpack.config.js создает несколько загрузчиков среды выполнения. Его необходимо изменить, чтобы загрузить через файлtaskpane.html только общую среду выполнения.
Запустите Visual Studio Code и откройте созданный вами проект надстройки.
Откройте файл webpack.config.js.
Если файл webpack.config.js содержит следующий код подключаемого модуля functions.html, удалите его.
new HtmlWebpackPlugin({ filename: "functions.html", template: "./src/functions/functions.html", chunks: ["polyfill", "functions"] })
Если файл webpack.config.js содержит следующий код подключаемого модуля commands.html, удалите его.
new HtmlWebpackPlugin({ filename: "commands.html", template: "./src/commands/commands.html", chunks: ["polyfill", "commands"] })
Если в проекте используются блоки functions или commands, добавьте их в список блоков, как показано ниже (следующий код предназначен для проекта, применяющего оба блока).
new HtmlWebpackPlugin({ filename: "taskpane.html", template: "./src/taskpane/taskpane.html", chunks: ["polyfill", "taskpane", "commands", "functions"] })
Сохраните изменения и выполните повторную сборку проекта.
npm run build
Примечание.
Если в проекте есть файлы functions.html или commands.html, их можно удалить. taskpane.html загрузит functions.js и commands.js код в общую среду выполнения с помощью только что внесенных обновлений webpack.
Тестирование изменений надстройки Office
Убедитесь, что вы правильно используете общую среду выполнения, выполнив следующие инструкции.
Откройте файл taskpane.js.
Замените все содержимое файла указанным ниже кодом. Отобразится количество открытий области задач.
onVisibilityModeChanged
Добавление события поддерживается только в общей среде выполнения./*global document, Office*/ let _count = 0; Office.onReady(() => { document.getElementById("sideload-msg").style.display = "none"; document.getElementById("app-body").style.display = "flex"; updateCount(); // Update count on first open. Office.addin.onVisibilityModeChanged((args) => { if (args.visibilityMode === Office.VisibilityMode.taskpane) { updateCount(); // Update count on subsequent opens. } }); }); function updateCount() { _count++; document.getElementById("run").textContent = "Task pane opened " + _count + " times."; }
Сохраните изменения и запустите проект.
npm start
Каждый раз, когда вы открываете область задач, количество открытий увеличивается на единицу. Значение _count не будет потеряно, так как общая среда выполнения поддерживает выполнение кода, даже если область задач закрыта.
Когда вы будете готовы остановить сервер разработки и удалить надстройку, выполните следующую команду.
npm stop
Сведения о общей среде выполнения
В Windows или Mac надстройка будет выполнять код для кнопок ленты, пользовательских функций и области задач в отдельных средах выполнения. Это создает ограничения, например невозможность легко обмениваться глобальными данными и невозможность доступа ко всем функциям CORS из пользовательской функции.
Однако вы можете настроить надстройку Office для совместного использования кода в одной среде выполнения (также называемой общей средой выполнения). За счет этого повышается скоординированность работы надстройки и упрощается доступ к модели DOM и CORS области задач из всех компонентов надстройки.
При настройке общей среды выполнения становятся возможными следующие сценарии.
- Надстройка Office может использовать дополнительные функции пользовательского интерфейса
- Следующие функции доступны только для надстроек Excel.
- Добавление настраиваемых сочетаний клавиш в надстройки Office
- Создание пользовательских контекстных вкладок в надстройках Office
- Пользовательские функции полностью поддерживают CORS.
- Пользовательские функции могут вызывать API Office.js для чтения данных из электронной таблицы.
Для Office в Windows общая среда выполнения использует WebView2 (Microsoft Edge Chromium), если условия ее использования выполняются, как описано в разделе Браузеры и элементы управления webview, используемые надстройками Office. В противном случае используется Trident (Интернет Обозреватель 11). Кроме того, все кнопки, которые надстройка отображает на ленте, будут работать в одной и той же общей среде выполнения. На следующем рисунке показано, как пользовательские функции, пользовательский интерфейс ленты и код области задач будут выполняться в одной среде выполнения.
Несколько областей задач
Не планируйте использовать в своей надстройке несколько областей задач, если предполагается использование общей среды выполнения. Общая среда выполнения поддерживает только одну область задач. Обратите внимание: любая область задач без <TaskpaneID>
считается другой областью задач.
См. также
- Вызов API Excel из пользовательской функции
- Добавление настраиваемых сочетаний клавиш в надстройки Office
- Создание пользовательских контекстных вкладок в надстройках Office
- Включение и отключение команд надстроек
- Запуск кода в надстройке Office при открытии документа
- Отображение и скрытие области задач надстройки Office
- Учебное руководство. Обмен данными и событиями между пользовательскими функциями Excel и областью задач
- Среды выполнения в надстройках Office
Office Add-ins