Skip to content

Commit a795678

Browse files
[Outlook] Refresh low engagement articles (#5235)
* Refresh low engagement articles * Apply suggestion from review Co-authored-by: Elizabeth Samuel <[email protected]> --------- Co-authored-by: Elizabeth Samuel <[email protected]>
1 parent 52c85b8 commit a795678

10 files changed

+111
-268
lines changed

.openpublishing.redirection.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1317,6 +1317,10 @@
13171317
{
13181318
"source_path": "docs/outlook/item-data.md",
13191319
"redirect_url": "/javascript/api/requirement-sets/outlook/outlook-api-requirement-sets"
1320+
},
1321+
{
1322+
"source_path": "docs/outlook/privacy-and-security.md",
1323+
"redirect_url": "/office/dev/add-ins/concepts/privacy-and-security"
13201324
}
13211325
]
13221326
}

docs/concepts/privacy-and-security.md

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Privacy and security for Office Add-ins
33
description: Learn about the privacy and security aspects of the Office Add-ins platform.
4-
ms.date: 02/12/2025
4+
ms.date: 06/17/2025
55
ms.localizationpriority: medium
66
---
77

@@ -66,10 +66,23 @@ You can make your Office Add-ins available to the public by publishing them to A
6666

6767
End users and IT admins can turn off [optional connected experiences in Office](/deployoffice/privacy/optional-connected-experiences) desktop and mobile clients. For Office Add-ins, the impact of disabling the **Optional connected experiences** setting is that users can no longer access add-ins or the Microsoft 365 and Copilot store through these clients. However, certain Microsoft add-ins that are considered essential or business-critical, and add-ins deployed by an organization's IT admin through [Centralized Deployment](/microsoft-365/admin/manage/centralized-deployment-of-add-ins) will still be available. Additionally, add-ins and the Microsoft 365 and Copilot store remain available in Outlook on the web, regardless of the status of the setting.
6868

69-
For more about Outlook-specific behavior, see [Privacy, permissions, and security for Outlook add-ins](../outlook/privacy-and-security.md#optional-connected-experiences).
70-
7169
Note that if an IT admin disables the [use of connected experiences in Office](/deployoffice/privacy/manage-privacy-controls#policy-setting-for-most-connected-experiences), it has the same effect on add-ins as turning off just optional connected experiences.
7270

71+
### Optional connected experiences in Outlook
72+
73+
The following table describes the availability of add-ins on Outlook clients when optional connected experiences is turned off.
74+
75+
|Client|Behavior when optional connected experiences is turned off|
76+
|-----|-----|
77+
|<ul><li>Web browser</li><li>[new Outlook on Windows](https://support.microsoft.com/office/656bb8d9-5a60-49b2-a98b-ba7822bc7627)</li></ul>|Availability of add-ins and access to AppSource are unaffected, so users can continue to [manage their add-ins](https://support.microsoft.com/office/1ee261f9-49bf-4ba6-b3e2-2ba7bcab64c8), including admin-deployed ones.|
78+
|<ul><li>Windows (classic)<sup>1</sup></li><li>Mac</li></ul>|The **All Apps**<sup>2</sup> or **Get Add-ins** button isn't displayed, so users aren't able to manage their add-ins or access AppSource.|
79+
|<ul><li>Android</li><li>iOS</li></ul>|The **Get Add-ins** dialog shows only admin-deployed add-ins.|
80+
81+
> [!NOTE]
82+
> <sup>1</sup> On Windows, support for this experience is available from Version 2008 (Build 13127.20296). For more details on your client version, see the update history page for [Microsoft 365](/officeupdates/update-history-office365-proplus-by-date) and how to [find your Office client version and update channel](https://support.microsoft.com/office/932788b8-a3ce-44bf-bb09-e334518b8b19).<br>
83+
>
84+
> <sup>2</sup> Starting in classic Outlook on Windows Version 2303 (Build 16215.10000), the **All Apps** button is used to manage add-ins and access AppSource.
85+
7386
## Addressing end users' privacy concerns
7487

7588
This section describes the protection offered by the Office Add-ins platform from the customer's (end user's) perspective, and provides guidelines for how to support users' expectations and how to securely handle users' personally identifiable information (PII).
@@ -109,7 +122,31 @@ The add-in platform addresses end users' privacy concerns in the following ways.
109122

110123
- Running in a web browser control allows the add-in to do almost anything a regular web page running in a browser can do but, at the same time, restricts the add-in to observe the same-origin policy for domain isolation and security zones.
111124

112-
Outlook add-ins provide additional security and performance features through Outlook add-in specific resource usage monitoring. For more information, see [Privacy, permissions, and security for Outlook add-ins](../outlook/privacy-and-security.md).
125+
#### End users' perspective in Outlook
126+
127+
The following points address end users' privacy concerns specific to Outlook.
128+
129+
- End user's messages that are protected by Outlook's Information Rights Management (IRM) won't interact with add-ins in the following instances.
130+
131+
- When the IRM-protected message is accessed from Outlook on mobile devices.
132+
133+
- When the IRM-protected message contains a sensitivity label with the **Allow programmatic access** custom policy option set to `false`.
134+
135+
For more information on IRM support in add-ins, see [Mail items protected by IRM](../outlook/outlook-add-ins-overview.md#mail-items-protected-by-irm).
136+
137+
- Granting the **restricted** permission allows the Outlook add-in to have limited access on only the current item. Granting the **read item** permission allows the Outlook add-in to access personal identifiable information, such as sender and recipient names and email addresses, on only the current item. For more information on Outlook add-in permissions, see [Understanding Outlook add-in permissions](../outlook/understanding-outlook-add-in-permissions.md).
138+
139+
- Manifest files of installed Outlook add-ins are secured in the user's email account.
140+
141+
- Outlook on Windows (classic) and on Mac monitor the performance of installed Outlook add-ins, exercise governance control, and make add-ins unavailable when they exceed limits in the following areas.
142+
143+
- Response time to activate
144+
145+
- Number of failures to activate or reactivate
146+
147+
- Memory usage
148+
149+
- CPU usage
113150

114151
### Developer guidelines to handle PII
115152

@@ -178,11 +215,7 @@ The following example shows how a task pane add-in specifies the **read document
178215

179216
For more information about permissions for task pane and content add-ins, see [Requesting permissions for API use in add-ins](../develop/requesting-permissions-for-api-use-in-content-and-task-pane-add-ins.md).
180217

181-
For more information about permissions for Outlook add-ins, see the following topics.
182-
183-
- [Privacy, permissions, and security for Outlook add-ins](../outlook/privacy-and-security.md)
184-
185-
- [Understanding Outlook add-in permissions](../outlook/understanding-outlook-add-in-permissions.md)
218+
For more information about permissions for Outlook add-ins, see [Understanding Outlook add-in permissions](../outlook/understanding-outlook-add-in-permissions.md).
186219

187220
### Follow the same-origin policy
188221

@@ -306,10 +339,11 @@ The management and enforcement of Office settings is done with group policy sett
306339
| Block Web Add-ins | Allows you to prevent users from running Office Add-ins that use web technologies. |
307340
| Block the Office Store | Allows you to prevent users from getting or running Office Add-ins that come from [AppSource](https://appsource.microsoft.com). |
308341

342+
To specify permissions to install and manage Outlook add-ins in an organization that uses Exchange Online, configure administrative and user roles in the Exchange admin center. For more information, see [Specify the administrators and users who can install and manage add-ins for Outlook in Exchange Online](/exchange/clients-and-mobile-in-exchange-online/add-ins-for-outlook/specify-who-can-install-and-manage-add-ins).
343+
309344
## See also
310345

311346
- [Requesting permissions for API use in add-ins](../develop/requesting-permissions-for-api-use-in-content-and-task-pane-add-ins.md)
312-
- [Privacy, permissions, and security for Outlook add-ins](../outlook/privacy-and-security.md)
313347
- [Understanding Outlook add-in permissions](../outlook/understanding-outlook-add-in-permissions.md)
314348
- [Limits for activation and JavaScript API for Outlook add-ins](../outlook/limits-for-activation-and-javascript-api-for-outlook-add-ins.md)
315349
- [Addressing same-origin policy limitations in Office Add-ins](../develop/addressing-same-origin-policy-limitations.md)

docs/develop/requesting-permissions-for-api-use-in-content-and-task-pane-add-ins.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Requesting permissions for API use in add-ins
33
description: Learn about different permission levels to declare in the manifest of an add-in to specify the level of JavaScript API access.
4-
ms.date: 02/12/2025
4+
ms.date: 06/17/2025
55
ms.localizationpriority: medium
66
---
77

@@ -10,13 +10,12 @@ ms.localizationpriority: medium
1010
This article describes the different permission levels that you declare in your add-in's manifest to specify the level of JavaScript API access your add-in requires for its features.
1111

1212
> [!IMPORTANT]
13-
> This article applies to only non-Outlook add-ins. To learn about permission levels for Outlook add-ins, see [Outlook permissions model](../outlook/privacy-and-security.md#permissions-model).
13+
> This article applies to only non-Outlook add-ins. To learn about permission levels for Outlook add-ins, see [Understanding Outlook add-in permissions](../outlook/understanding-outlook-add-in-permissions.md).
1414
1515
## Permissions model
1616

1717
A five-level JavaScript API access-permissions model provides the basis for privacy and security for users of your add-ins. The following figure shows the five levels of API permissions you can declare in your add-in's manifest.
1818

19-
2019
![Levels of permissions for add-ins.](../images/office15-app-sdk-task-pane-app-permission.png)
2120

2221
These permissions specify the subset of the API that the add-in [runtime](../testing/runtimes.md) allows your add-in to use when a user inserts, and then activates (trusts) your add-in. To declare the permission level your add-in requires, specify one of the permission values in the manifest. The markup varies depending on the type of manifest.

docs/includes/outlook-permission-levels-table.md

Lines changed: 0 additions & 17 deletions
This file was deleted.

docs/outlook/get-and-set-recurrence.md

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Get and set the recurrence of appointments
33
description: This topic shows you how to use the Office JavaScript API to get and set various recurrence properties of an appointment using an Outlook add-in.
4-
ms.date: 05/30/2024
4+
ms.date: 06/17/2024
55
ms.topic: how-to
66
ms.localizationpriority: medium
77
---
@@ -55,7 +55,7 @@ Along with the recurrence pattern, you also need to determine the start and end
5555

5656
The appointment organizer can specify the recurrence pattern for an appointment series in compose mode only. In the following example, the appointment series is set to occur from 10:30 AM to 11:00 AM PST every Tuesday and Thursday during the period November 2, 2019 to December 2, 2019.
5757

58-
```js
58+
```javascript
5959
const seriesTimeObject = new Office.SeriesTime();
6060
seriesTimeObject.setStartDate(2019,10,2);
6161
seriesTimeObject.setEndDate(2019,11,2);
@@ -80,9 +80,9 @@ Office.context.mailbox.item.recurrence.setAsync(pattern, (asyncResult) => {
8080

8181
## Change recurrence as the organizer
8282

83-
In the following example, the appointment organizer gets the `Recurrence` object of an appointment series, then sets a new recurrence duration. This is done in compose mode.
83+
In the following example, the appointment organizer gets the [Recurrence](/javascript/api/outlook/office.recurrence) object of an appointment series, then sets a new recurrence duration. This is done in compose mode.
8484

85-
```js
85+
```javascript
8686
Office.context.mailbox.item.recurrence.getAsync((asyncResult) => {
8787
const recurrencePattern = asyncResult.value;
8888
recurrencePattern.seriesTime.setDuration(60);
@@ -101,7 +101,7 @@ Office.context.mailbox.item.recurrence.getAsync((asyncResult) => {
101101

102102
In the following example, the appointment organizer gets the `Recurrence` object of an appointment to determine whether it's a recurring series. This is done in compose mode.
103103

104-
```js
104+
```javascript
105105
Office.context.mailbox.item.recurrence.getAsync((asyncResult) => {
106106
const recurrence = asyncResult.value;
107107

@@ -135,7 +135,7 @@ The following example shows the results of the `getAsync` call that retrieves th
135135

136136
In the following example, an appointment attendee gets the `Recurrence` object of an appointment or meeting request.
137137

138-
```js
138+
```javascript
139139
outputRecurrence(Office.context.mailbox.item);
140140

141141
function outputRecurrence(item) {
@@ -171,25 +171,53 @@ The following example shows the value of the `item.recurrence` property of an ap
171171

172172
After you've retrieved the recurrence object (either from the `getAsync` callback or from `item.recurrence`), you can get specific properties of the recurrence. For example, get the start and end dates and times of the series by using the [SeriesTime][SeriesTime link] methods on the `recurrence.seriesTime` property.
173173

174-
```js
175-
// Get series date and time info
174+
```javascript
175+
// Get the date and time information of the series.
176176
const seriesTime = recurrence.seriesTime;
177177
const startTime = recurrence.seriesTime.getStartTime();
178178
const endTime = recurrence.seriesTime.getEndTime();
179179
const startDate = recurrence.seriesTime.getStartDate();
180180
const endDate = recurrence.seriesTime.getEndDate();
181181
const duration = recurrence.seriesTime.getDuration();
182182

183-
// Get series time zone
183+
// Get the series time zone.
184184
const timeZone = recurrence.recurrenceTimeZone;
185185

186-
// Get recurrence properties
186+
// Get the recurrence properties.
187187
const recurrenceProperties = recurrence.recurrenceProperties;
188188

189-
// Get recurrence type
189+
// Get the recurrence type.
190190
const recurrenceType = recurrence.recurrenceType;
191191
```
192192

193+
## Identify when the recurrence pattern changes
194+
195+
There may be scenarios where you want your add-in to detect and handle changes to the recurrence pattern of a series. For example, you'd like to update the appointment's location if the series is extended. To implement this, you must create a handler for the [RecurrenceChanged](/javascript/api/office/office.eventtype) event. To add an event handler for the `RecurrenceChanged` event, call [Office.context.mailbox.item.addHandlerAsync](/javascript/api/requirement-sets/outlook/preview-requirement-set/office.context.mailbox.item#methods). When a change is detected, the event handler receives an argument of type [Office.RecurrenceChangedEventArgs](/javascript/api/outlook/office.recurrencechangedeventargs), which provides the updated recurrence object.
196+
197+
The following example shows how to register an event handler for the `RecurrenceChanged` event.
198+
199+
```javascript
200+
// This sample shows how to register an event handler in Outlook.
201+
Office.onReady(() => {
202+
// Register an event handler to identify when the recurrence pattern of a series is updated.
203+
Office.context.mailbox.item.addHandlerAsync(Office.EventType.RecurrenceChanged, handleEvent, (asyncResult) => {
204+
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
205+
console.log(asyncResult.error.message);
206+
return;
207+
}
208+
209+
console.log("Event handler added for the RecurrenceChanged event.");
210+
});
211+
});
212+
213+
function handleEvent(event) {
214+
// Get the updated recurrence object.
215+
const updatedRecurrence = event.recurrence;
216+
217+
// Perform operations in response to the updated recurrence pattern.
218+
}
219+
```
220+
193221
## Run sample snippets in Script Lab
194222

195223
To test how to get and set the recurrence of an appointment with an add-in, install the [Script Lab for Outlook add-in](https://appsource.microsoft.com/product/office/wa200001603) and run the following sample snippets.
@@ -203,9 +231,8 @@ To learn more about Script Lab, see [Explore Office JavaScript API using Script
203231

204232
## See also
205233

206-
- [RecurrenceChanged event](/javascript/api/office/office.eventtype)
207-
- [Recurrence object](/javascript/api/outlook/office.recurrence)
208-
- [SeriesTime object](/javascript/api/outlook/office.seriestime)
234+
- [Get or set the time when composing an appointment in Outlook](get-or-set-the-time-of-an-appointment.md)
235+
- [Get or set the location when composing an appointment in Outlook](get-or-set-the-location-of-an-appointment.md)
209236

210237
[getAsync link]: /javascript/api/outlook/office.recurrence#getAsync_options__callback_
211238
[item.recurrence link]: /javascript/api/requirement-sets/outlook/preview-requirement-set/office.context.mailbox.item#properties

0 commit comments

Comments
 (0)