From 08ce23f0b505ec1b3379f58e76100b0344e4cd87 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Thu, 15 Aug 2024 17:34:59 -0700 Subject: [PATCH 1/3] Document loadItemByIdAsync API --- docs/images/outlook-multi-select.png | Bin 9056 -> 26514 bytes docs/outlook/item-multi-select.md | 148 +++++++++++++++++++++------ 2 files changed, 118 insertions(+), 30 deletions(-) diff --git a/docs/images/outlook-multi-select.png b/docs/images/outlook-multi-select.png index 5fde0b1464e11118c1d25c23c5ec43d0bc6e3684..b00957fa82a94a5deda65c001de8f6e052008a28 100644 GIT binary patch literal 26514 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 RyFXAo9Zds`Mm12>e*=|l;cWl_ diff --git a/docs/outlook/item-multi-select.md b/docs/outlook/item-multi-select.md index efba8d0c08..3e085f4d84 100644 --- a/docs/outlook/item-multi-select.md +++ b/docs/outlook/item-multi-select.md @@ -1,7 +1,7 @@ --- title: Activate your Outlook add-in on multiple messages description: Learn how to activate your Outlook add-in when multiple messages are selected. -ms.date: 05/20/2024 +ms.date: 08/15/2024 ms.topic: how-to ms.localizationpriority: medium --- @@ -10,7 +10,7 @@ ms.localizationpriority: medium With the item multi-select feature, your Outlook add-in can now activate and perform operations on multiple selected messages in one go. Certain operations, such as uploading messages to your Customer Relationship Management (CRM) system or categorizing numerous items, can now be easily completed with a single click. -The following sections walk you through how to configure your add-in to retrieve the subject line of multiple messages in read mode. +The following sections show how to configure your add-in to retrieve the subject line and sender's email address of multiple messages in read mode. > [!NOTE] > Support for the item multi-select feature was introduced in [requirement set 1.13](/javascript/api/requirement-sets/outlook/requirement-set-1.13/outlook-requirement-set-1.13), with additional item properties now available in subsequent requirement sets. See [clients and platforms](/javascript/api/requirement-sets/outlook/outlook-api-requirement-sets#requirement-sets-supported-by-exchange-servers-and-outlook-clients) that support this requirement set. @@ -157,7 +157,7 @@ To enable your add-in to activate on multiple selected messages, you must add th - + @@ -181,14 +181,23 @@ Item multi-select relies on the [SelectedItemsChanged](/javascript/api/office/of ```html
-

Retrieve the subject line of multiple messages with one click!

+

Get information about each selected message

    - Run + Get information
    ``` +1. For classic Outlook on Windows only. Replace the existing **script** element with the following markup. This references the preview version of the Office JavaScript API. + + ```html + + ``` + + > [!NOTE] + > The preview version of the Office JavaScript API is used because this walkthrough implements the `loadItemByIdAsync` and `unloadAsync` methods, which are currently in preview. If your multi-select add-in doesn't implement these methods, use `https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js` instead. For more information, see [Referencing the Office JavaScript API library](../develop/referencing-the-javascript-api-for-office-library-from-its-cdn.md). + 1. Save your changes. ## Implement a handler for the SelectedItemsChanged event @@ -197,52 +206,130 @@ To alert your add-in when the `SelectedItemsChanged` event occurs, you must regi 1. From the **./src/taskpane** folder, open **taskpane.js**. -1. In the `Office.onReady()` callback function, replace the existing code with the following: +1. Replace the `Office.onReady()` function with the following: ```javascript - if (info.host === Office.HostType.Outlook) { + 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 => { + 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."); }); - } + } + }); ``` +1. Save your changes. + +## Get properties and run operations on selected messages + +Now that you've registered an event handler, your add-in can now get properties or run operations on multiple selected messages. There are two ways to process selected messages. The use of each option depends on the properties and operations you need for your scenario. + +- Call the [getSelectedItemsAsync](/javascript/api/outlook/office.mailbox#outlook-office-mailbox-getselecteditemsasync-member(1)) method to get the following properties: + - Attachment boolean + - Conversation ID + - Internet message ID + - Item ID + - Item mode (`Read` or `Compose`) + - Item type (`Message` is the only supported type at this time) + - Subject line +- Call the [loadItemByIdAsync](/javascript/api/outlook/office.mailbox?view=outlook-js-preview&preserve-view=true#outlook-office-mailbox-loaditembyidasync-member(1)) method (preview) to get properties that aren't provided by `getSelectedItemsAsync` or to run operations on the selected messages. The `loadItemByIdAsync` method loads one selected message at a time using the message's Exchange Web Services (EWS) ID. To get the EWS IDs of the selected messages, we recommend calling `getSelectedItemsAsync`. After processing a selected message using `loadItemByIdAsync`, you must call the `unloadAsync` method (preview) before calling `loadItemByIdAsync` on another selected message. + + > [!TIP] + > Before you use the `loadItemByIdAsync` method, determine if you can already access the properties you need using `getSelectedItemsAsync`. If you can, you don't need to call `loadItemByIdAsync`. -## Retrieve the subject line of selected messages +The following example implements the `getSelectedItemsAsync` and `loadItemByIdAsync` methods to get the subject line and sender's email address from each selected message. -Now that you've registered an event handler, you then call the [getSelectedItemsAsync](/javascript/api/outlook/office.mailbox#outlook-office-mailbox-getselecteditemsasync-member(1)) method to retrieve the subject line of the selected messages and log them to the task pane. The `getSelectedItemsAsync` method can also be used to get other message properties, such as the item ID, item type (`Message` is the only supported type at this time), and item mode (`Read` or `Compose`). +> [!NOTE] +> The `loadItemByIdAsync` method is currently in preview in classic Outlook on Windows. To preview this API, install Version 2405 (Build 17606.10000) or later. Then, join the [Microsoft 365 Insider program](https://insider.microsoft365.com/join/Windows) and select the **Beta Channel** option. -1. In **taskpane.js**, navigate to the `run` function and insert the following code. +1. In **taskpane.js**, replace the existing `run` function with the following code. ```javascript - // Clear list of previously selected messages, if any. - const list = document.getElementById("selected-items"); - while (list.firstChild) { - list.removeChild(list.firstChild); - } + export async function run() { + // Clear the list of previously selected messages, if any. + clearList(list); - // Retrieve the subject line of the selected messages and log it to a list in the task pane. - Office.context.mailbox.getSelectedItemsAsync(asyncResult => { + // 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; + console.log(asyncResult.error.message); + return; } - asyncResult.value.forEach(item => { - const listItem = document.createElement("li"); - listItem.textContent = item.subject; - list.appendChild(listItem); + 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})`; + } ``` 1. Save your changes. @@ -262,9 +349,9 @@ Now that you've registered an event handler, you then call the [getSelectedItems 1. Navigate to your inbox and choose multiple messages by holding **Ctrl** while selecting messages. -1. Select **Show Taskpane** from the ribbon. +1. Select **Show Taskpane**. The location of the add-in varies depending on your Outlook client. For guidance, see [Use add-ins in Outlook](https://support.microsoft.com/office/1ee261f9-49bf-4ba6-b3e2-2ba7bcab64c8). -1. In the task pane, select **Run** to view a list of the selected messages' subject lines. +1. In the task pane, select **Get information**. A list of the selected messages' subject lines and sender email addresses is displayed in the task pane. :::image type="content" source="../images/outlook-multi-select.png" alt-text="A sample list of subject lines retrieved from multiple selected messages."::: @@ -277,6 +364,7 @@ Item multi-select only supports messages within an Exchange mailbox in both read - An add-in must implement a task pane in order to detect the `SelectedItemsChanged` event. - The [Reading Pane](https://support.microsoft.com/office/2fd687ed-7fc4-4ae3-8eab-9f9b8c6d53f0) in Outlook must be enabled. An exception to this is if the item multi-select feature is enabled through the no item context feature in the manifest. To learn more, see [Activate your Outlook add-in without the Reading Pane enabled or a message selected](contextless.md). - A maximum of 100 messages can be selected at a time. +- The `loadItemByIdAsync` method only processes one selected message at a a time. Remember to call `unloadAsync` after `loadItemByIdAsync` finishes processing the message. This way, the add-in can load and process the next selected message. > [!NOTE] > Meeting invites and responses are considered messages, not appointments, and can therefore be included in a selection. From 3778a1e56b75d3a346707f626cf1881c83ac560c Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Fri, 16 Aug 2024 10:29:16 -0700 Subject: [PATCH 2/3] Fix spacing --- docs/outlook/item-multi-select.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/outlook/item-multi-select.md b/docs/outlook/item-multi-select.md index 3e085f4d84..a9d8766c63 100644 --- a/docs/outlook/item-multi-select.md +++ b/docs/outlook/item-multi-select.md @@ -230,6 +230,7 @@ To alert your add-in when the `SelectedItemsChanged` event occurs, you must regi } }); ``` + 1. Save your changes. ## Get properties and run operations on selected messages From b60c28a77241b6d86dee2da613e0d0016880b3de Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:19:43 -0700 Subject: [PATCH 3/3] Add link --- docs/outlook/item-multi-select.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/outlook/item-multi-select.md b/docs/outlook/item-multi-select.md index a9d8766c63..acea63324a 100644 --- a/docs/outlook/item-multi-select.md +++ b/docs/outlook/item-multi-select.md @@ -245,7 +245,7 @@ Now that you've registered an event handler, your add-in can now get properties - Item mode (`Read` or `Compose`) - Item type (`Message` is the only supported type at this time) - Subject line -- Call the [loadItemByIdAsync](/javascript/api/outlook/office.mailbox?view=outlook-js-preview&preserve-view=true#outlook-office-mailbox-loaditembyidasync-member(1)) method (preview) to get properties that aren't provided by `getSelectedItemsAsync` or to run operations on the selected messages. The `loadItemByIdAsync` method loads one selected message at a time using the message's Exchange Web Services (EWS) ID. To get the EWS IDs of the selected messages, we recommend calling `getSelectedItemsAsync`. After processing a selected message using `loadItemByIdAsync`, you must call the `unloadAsync` method (preview) before calling `loadItemByIdAsync` on another selected message. +- Call the [loadItemByIdAsync](/javascript/api/outlook/office.mailbox?view=outlook-js-preview&preserve-view=true#outlook-office-mailbox-loaditembyidasync-member(1)) method (preview) to get properties that aren't provided by `getSelectedItemsAsync` or to run operations on the selected messages. The `loadItemByIdAsync` method loads one selected message at a time using the message's Exchange Web Services (EWS) ID. To get the EWS IDs of the selected messages, we recommend calling `getSelectedItemsAsync`. After processing a selected message using `loadItemByIdAsync`, you must call the [unloadAsync](/javascript/api/outlook/office.loadedmessageread?view=outlook-js-preview&preserve-view=true#outlook-office-loadedmessageread-unloadasync-member(1)) method (preview) before calling `loadItemByIdAsync` on another selected message. > [!TIP] > Before you use the `loadItemByIdAsync` method, determine if you can already access the properties you need using `getSelectedItemsAsync`. If you can, you don't need to call `loadItemByIdAsync`.