Активация надстройки Outlook для нескольких сообщений
С помощью функции множественного выбора элементов надстройка Outlook теперь может активировать и выполнять операции с несколькими выбранными сообщениями за один раз. Некоторые операции, такие как отправка сообщений в систему управления отношениями с клиентами (CRM) или классификация многочисленных элементов, теперь можно легко выполнить одним щелчком мыши.
В следующих разделах показано, как настроить надстройку для получения строки темы и адреса электронной почты отправителя нескольких сообщений в режиме чтения.
Примечание.
Поддержка функции множественного выбора элементов появилась в наборе требований 1.13. Дополнительные свойства элементов теперь доступны в последующих наборах требований. См клиенты и платформы, поддерживающие этот набор обязательных требований.
Настройка среды
Выполните краткое руководство по созданию проекта надстройки с помощью генератора Yeoman для надстроек Office.
Настройка манифеста
В предпочитаемом редакторе кода откройте созданный проект быстрого запуска Outlook.
Откройте файл manifest.json , расположенный в корне проекта.
В массиве authorization.permissions.resourceSpecific измените значение свойства name на Mailbox.ReadWrite.User. По завершении он должен выглядеть следующим образом.
"authorization": { "permissions": { "resourceSpecific": [ { "name": "Mailbox.ReadWrite.User", "type": "Delegated" } ] } },
В первом объекте массива extensions.runtimes внесите следующие изменения.
- Измените свойство requirements.capabilities.minVersion на "1.13".
- В том же объекте actions добавьте свойство supportsNoItemContext и присвойте ему значение
true
. - В том же объекте actions добавьте свойство multiselect и присвойте ему значение
true
.
После внесения изменений код должен выглядеть следующим образом.
"runtimes": [ { "requirements": { "capabilities": [ { "name": "Mailbox", "minVersion": "1.13" } ] }, "id": "TaskPaneRuntime", "type": "general", "code": { "page": "https://localhost:3000/taskpane.html" }, "lifetime": "short", "actions": [ { "id": "TaskPaneRuntimeShow", "type": "openPage", "pinnable": false, "view": "dashboard", "supportsNoItemContext": true, "multiselect": true } ] }, ... ]
Удалите второй объект массива extensions.runtimes, идентификатор которого имеет значение CommandsRuntime.
В массиве extensions.ribbons.tabs.controls удалите второй объект, идентификатор которого — ActionButton.
Сохраните изменения.
Примечание.
Если включить функцию множественного выбора элементов в надстройке, надстройка будет автоматически поддерживать функцию контекста без элементов , даже если она явно не настроена в манифесте. Дополнительные сведения о поведении закрепления области задач в надстройках с несколькими выборками см. в разделе Закрепление области задач в надстройках с несколькими выборками.
Настройка области задач
Элемент с несколькими выборами зависит от события SelectedItemsChanged , чтобы определить, когда выбраны или отменены сообщения. Для этого события требуется реализация области задач.
В папке ./src/taskpane откройте taskpane.html.
В элементе <body> замените весь <элемент main> следующей разметкой.
<main id="app-body" class="ms-welcome__main"> <h2 class="ms-font-l">Get information about each selected message</h2> <ul id="selected-items"></ul> <div role="button" id="run" class="ms-welcome__action ms-Button ms-Button--hero ms-font-xl"> <span class="ms-Button-label">Get information</span> </div> </main>
Только для классического Outlook в Windows. Замените существующий элемент скрипта следующей разметкой. Он ссылается на предварительную версию API JavaScript для Office.
<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/beta/hosted/office.js"></script>
Примечание.
Предварительная версия API JavaScript для Office используется, так как в этом пошаговом руководстве реализованы методы
loadItemByIdAsync
иunloadAsync
, которые в настоящее время находятся в предварительной версии. Если надстройка с несколькими выборами не реализует эти методы, используйтеhttps://appsforoffice.microsoft.com/lib/1.1/hosted/office.js
вместо нее. Дополнительные сведения см. в статье Ссылка на библиотеку API JavaScript для Office.Сохраните изменения.
Реализация обработчика для события SelectedItemsChanged
Чтобы оповещать addHandlerAsync
надстройку о возникновении SelectedItemsChanged
события, необходимо зарегистрировать обработчик событий с помощью метода .
В папке ./src/taskpane откройте taskpane.js.
Замените функцию
Office.onReady()
следующим:let list; Office.onReady((info) => { if (info.host === Office.HostType.Outlook) { document.getElementById("sideload-msg").style.display = "none"; document.getElementById("app-body").style.display = "flex"; document.getElementById("run").onclick = run; list = document.getElementById("selected-items"); // Register an event handler to identify when messages are selected. Office.context.mailbox.addHandlerAsync(Office.EventType.SelectedItemsChanged, run, (asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { console.log(asyncResult.error.message); return; } console.log("Event handler added."); }); } });
Сохраните изменения.
Получение свойств и выполнение операций с выбранными сообщениями
Теперь, когда вы зарегистрировали обработчик событий, надстройка теперь может получать свойства или выполнять операции с несколькими выбранными сообщениями. Существует два способа обработки выбранных сообщений. Использование каждого параметра зависит от свойств и операций, необходимых для вашего сценария.
Вызовите метод getSelectedItemsAsync , чтобы получить следующие свойства.
- Логическое вложение
- Идентификатор беседы
- Идентификатор сообщения в Интернете
- Идентификатор элемента
- Режим элемента (
Read
илиCompose
) - Тип элемента (
Message
является единственным поддерживаемым типом в настоящее время) - Строка темы
Вызовите метод loadItemByIdAsync (предварительная версия), чтобы получить свойства, не предоставленные или выполнить операции с выбранными
getSelectedItemsAsync
сообщениями. МетодloadItemByIdAsync
загружает одно выбранное сообщение за раз с помощью идентификатора веб-служб Exchange (EWS). Чтобы получить идентификаторы EWS выбранных сообщений, рекомендуется вызвать .getSelectedItemsAsync
После обработки выбранного сообщения с помощьюloadItemByIdAsync
необходимо вызвать метод unloadAsync (предварительная версия), прежде чем вызыватьloadItemByIdAsync
другое выбранное сообщение.Совет
Перед использованием метода определите
loadItemByIdAsync
, можно ли получить доступ к нужным свойствам с помощьюgetSelectedItemsAsync
. Если это возможно, вам не нужно вызыватьloadItemByIdAsync
.
В следующем примере реализуются методы getSelectedItemsAsync
и loadItemByIdAsync
для получения строки темы и адреса электронной почты отправителя из каждого выбранного сообщения.
Примечание.
В loadItemByIdAsync
настоящее время метод находится в предварительной версии в классической версии Outlook в Windows. Чтобы просмотреть этот API, установите версию 2405 (сборка 17606.10000) или более позднюю. Затем присоединитесь к программе предварительной оценки Microsoft 365 и выберите вариант Канал бета-версии .
В taskpane.jsзамените существующую
run
функцию следующим кодом.export async function run() { // Clear the list of previously selected messages, if any. clearList(list); // Get the subject line and sender's email address of each selected message and log it to a list in the task pane. Office.context.mailbox.getSelectedItemsAsync((asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { console.log(asyncResult.error.message); return; } const selectedItems = asyncResult.value; getItemInfo(selectedItems); }); } // Gets the subject line and sender's email address of each selected message. async function getItemInfo(selectedItems) { for (const item of selectedItems) { addToList(item.subject); // The loadItemByIdAsync method is currently only available to preview in classic Outlook on Windows. if (Office.context.diagnostics.platform === Office.PlatformType.PC) { await getSenderEmailAddress(item); } } } // Gets the sender's email address of each selected message. async function getSenderEmailAddress(item) { const itemId = item.itemId; await new Promise((resolve) => { Office.context.mailbox.loadItemByIdAsync(itemId, (result) => { if (result.status === Office.AsyncResultStatus.Failed) { console.log(result.error.message); return; } const loadedItem = result.value; const sender = loadedItem.from.emailAddress; appendToListItem(sender); // Unload the current message before processing another selected message. loadedItem.unloadAsync((asyncResult) => { if (asyncResult.status === Office.AsyncResultStatus.Failed) { console.log(asyncResult.error.message); return; } resolve(); }); }); }); } // Clears the list in the task pane. function clearList(list) { while (list.firstChild) { list.removeChild(list.firstChild); } } // Adds an item to a list in the task pane. function addToList(item) { const listItem = document.createElement("li"); listItem.textContent = item; list.appendChild(listItem); } // Appends data to the last item of the list in the task pane. function appendToListItem(data) { const listItem = list.lastChild; listItem.textContent += ` (${data})`; }
Сохраните изменения.
Проверка
В терминале выполните следующий код в корневом каталоге проекта. Это запустит локальный веб-сервер и загрузит неопубликованную надстройку.
npm start
Совет
Если надстройка не загружает неопубликованное приложение автоматически, следуйте инструкциям в разделе Загрузка неопубликованных надстроек Outlook для тестирования, чтобы вручную загрузить ее в Outlook.
В Outlook убедитесь, что область чтения включена. Сведения о включении области чтения см. в статье Использование и настройка области чтения для предварительного просмотра сообщений.
Перейдите в папку "Входящие" и выберите несколько сообщений, удерживая нажатой клавишу CTRL при выборе сообщений.
Выберите Показать область задач. Расположение надстройки зависит от клиента Outlook. Инструкции см. в статье Использование надстроек в Outlook.
В области задач выберите Получить сведения. В области задач отображается список строк темы и адресов электронной почты отправителей выбранных сообщений.
Если вы хотите остановить локальный веб-сервер и удалить надстройку, следуйте применимым инструкциям:
Чтобы остановить сервер, выполните следующую команду. Если вы использовали
npm start
, следующая команда также должна удалить надстройку.npm stop
Если вы вручную загрузили неопубликованную надстройку, см. статью Удаление неопубликоченной надстройки.
Поведение и ограничения множественного выбора элементов
Элемент с несколькими выборами поддерживает только сообщения в почтовом ящике Exchange в режиме чтения и создания. Надстройка Outlook активируется только для нескольких сообщений, если выполняются следующие условия.
- Сообщения должны быть выбраны из одного почтового ящика Exchange одновременно. Почтовые ящики, отличные от Exchange, не поддерживаются.
- Сообщения должны быть выбраны из одной папки почтового ящика одновременно. Надстройка не активируется для нескольких сообщений, если они находятся в разных папках, если не включено представление Беседы. Дополнительные сведения см. в разделе Множественный выбор в беседах.
- Надстройка должна реализовать область задач, чтобы обнаружить
SelectedItemsChanged
событие. - Область чтения в Outlook должна быть включена. Исключением является, если функция множественного выбора элементов включена через функцию контекста без элемента в манифесте. Дополнительные сведения см. в статье Активация надстройки Outlook без включения области чтения или выбранного сообщения.
- Одновременно можно выбрать не более 100 сообщений.
- Метод
loadItemByIdAsync
обрабатывает только одно выбранное сообщение за раз. Не забудьте вызвать послеunloadAsync
loadItemByIdAsync
завершения обработки сообщения. Таким образом, надстройка может загрузить и обработать следующее выбранное сообщение. - Как правило, операции get можно выполнять только для выбранного сообщения, загруженного с помощью
loadItemByIdAsync
метода . Однако управление категориями загруженного сообщения является исключением. Вы можете добавлять, получать и удалять категории из загруженного сообщения. - Метод
loadItemByIdAsync
поддерживается в надстройках области задач и надстроек команд функций. Этот метод не поддерживается в надстройках активации на основе событий .
Примечание.
Приглашения на собрания и ответы считаются сообщениями, а не встречами и поэтому могут быть включены в выбор.
Множественный выбор в беседах
Элемент с несколькими выборами поддерживает просмотр бесед, независимо от того, включен ли он в почтовом ящике или в определенных папках. В следующей таблице описано ожидаемое поведение при развертывании или сворачивании бесед, при выборе заголовка беседы и при расположении сообщений беседы в папке, отличной от текущей.
Selection | Расширенное представление беседы | Свернутая беседа |
---|---|---|
Выбран заголовок беседы | Если заголовок беседы является единственным выбранным элементом, надстройка с поддержкой множественного выбора не активируется. Однако если также выбраны другие сообщения, не относящиеся к заголовку, надстройка будет активирована только для них, а не для выбранного заголовка. | Поведение зависит от клиента Outlook. Outlook в Windows (классической) и на Mac: В выбор сообщения включается новейшее сообщение (то есть первое сообщение в стеке бесед). Если последнее сообщение в беседе находится в другой папке из текущей папки, то последующее сообщение в стеке, расположенном в текущей папке, включается в выборку. Outlook в Интернете и новый Outlook в Windows: Выбраны все сообщения в стеке бесед. Сюда входят сообщения в беседе, которые находятся в папках, отличных от текущего представления. |
Несколько выбранных сообщений в стеке бесед находятся в той же папке, что и в настоящее время в представлении. | Все выбранные сообщения в одной беседе включаются в выборку. | Не применимо. Необходимо развернуть стек бесед, чтобы выбрать несколько сообщений из него. |
Несколько выбранных сообщений в стеке бесед находятся в разных папках, отличных от текущего в представлении | Все выбранные сообщения в одной беседе включаются в выборку. | Не применимо. Необходимо развернуть стек бесед, чтобы выбрать несколько сообщений из него. |
Примечание.
На всех клиентах Outlook нельзя выбрать несколько сообщений, принадлежащих к разным беседам. Если развернуть другую беседу, а другую беседу развернуть, представление текущей развернутой беседы свернется, а выбранные сообщения будут отменены. Однако можно выбрать несколько сообщений из одной развернутой беседы и сообщений, которые не являются частью беседы одновременно.
Закрепление области задач в надстройках с несколькими выборками
В Outlook в Интернете и в новом Outlook в Windows при открытии области задач надстройки с несколькими выборами она автоматически закрепляется в клиенте Outlook. Он остается закрепленным, даже если пользователь переключается на другой почтовый элемент или выбирает значок закрепления в области задач. Область задач можно закрыть, только нажав кнопку Закрыть в области задач.
И наоборот, в Outlook в Windows (классической) и на Mac область задач не закрепляется автоматически и закрывается, когда пользователь переключается на другой почтовый элемент.
Дальнейшие действия
Теперь, когда вы включили надстройку для работы с несколькими выбранными сообщениями, вы можете расширить возможности надстройки и улучшить пользовательский интерфейс. Изучите выполнение более сложных операций с помощью идентификаторов элементов выбранных сообщений со службами, такими как Microsoft Graph.
См. также
Office Add-ins