Mithilfe des RoamingSettings-Objekts können Sie Daten angeben, die spezifisch für das Postfach eines Exchange-Benutzers sind. Beispiele solcher Daten sind die persönlichen Daten und Einstellungen des Benutzers. Ihr Mail-Add-In kann auf Roamingeinstellungen zugreifen, wenn das Roaming auf dem entsprechenden Gerät (Desktop, Tablet oder Smartphone) aktiviert ist.
Änderungen an diesen Daten werden in einer speicherinterne Kopie der Einstellungen für die aktuelle Outlook-Sitzung gespeichert. Sie sollten alle Roamingeinstellungen nach dem Aktualisieren explizit speichern, damit sie verfügbar sind, wenn der Benutzer Das Add-In das nächste Mal auf demselben oder einem anderen unterstützten Gerät öffnet.
Wichtig
Obwohl die Outlook-Add-In-API den Zugriff auf diese Einstellungen nur auf das Add-In beschränkt, das sie erstellt hat, sollten diese Einstellungen nicht als sicherer Speicher betrachtet werden. Auf sie kann von anderen Diensten wie Microsoft Graph zugegriffen werden. Sie sollten nicht zum Speichern vertraulicher Informationen wie Benutzeranmeldeinformationen oder Sicherheitstoken verwendet werden.
Die Daten in einem Objekt des Typs RoamingSettings werden als serialisierte JSON-Zeichenfolge (JavaScript Object Notation) gespeichert.
Im Folgenden finden Sie ein Beispiel für die -Struktur, vorausgesetzt, es gibt drei definierte Roamingeinstellungen mit den Namen add-in_setting_name_0
, add-in_setting_name_1
und add-in_setting_name_2
.
{
"add-in_setting_name_0": "add-in_setting_value_0",
"add-in_setting_name_1": "add-in_setting_value_1",
"add-in_setting_name_2": "add-in_setting_value_2"
}
Laden der Roamingeinstellungen
Ein E-Mail-Add-In lädt in der Regel Roamingeinstellungen im Office.onReady-Handler . Das folgende JavaScript-Codebeispiel zeigt, wie vorhandene Roamingeinstellungen geladen und die Werte der beiden Einstellungen customerName und customerBalance abgerufen werden.
let _mailbox;
let _settings;
let _customerName;
let _customerBalance;
Office.onReady((info) => {
if (info.host === Office.HostType.Outlook) {
// Initialize instance variables to access API objects.
_mailbox = Office.context.mailbox;
_settings = Office.context.roamingSettings;
_customerName = _settings.get("customerName");
_customerBalance = _settings.get("customerBalance");
}
});
Erstellen oder Zuweisen einer Roamingeinstellung
Die folgende JavaScript-Funktion , die mit dem vorherigen Beispiel fortsetzt, setAddInSetting
zeigt, wie die RoamingSettings.set-Methode verwendet wird, um eine Einstellung mit dem Namen cookie
mit dem heutigen Datum festzulegen. Anschließend werden die Daten mithilfe der RoamingSettings.saveAsync-Methode gespeichert, um alle Roamingeinstellungen im Postfach des Benutzers zu speichern.
Die set
-Methode erstellt die Einstellung, wenn die Einstellung noch nicht vorhanden ist, und weist die Einstellung dem angegebenen Wert zu. Die saveAsync
-Methode speichert Roamingeinstellungen asynchron. In diesem Codebeispiel wird die Rückruffunktion saveMyAddInSettingsCallback
an saveAsync
übergeben. Wenn der asynchrone Aufruf abgeschlossen ist, saveMyAddInSettingsCallback
wird mit einem Parameter aufgerufen, asyncResult. Dieser Parameter ist ein AsyncResult-Objekt, das das Ergebnis und die Details zu dem asynchronen Aufruf enthält. Sie können den optionalen userContext-Parameter verwenden, um jegliche Zustandsinformationen von dem asynchronen Aufruf an die Rückruffunktion zu übergeben.
// Set a roaming setting.
function setAddInSetting() {
_settings.set("cookie", Date());
// Save roaming settings to the mailbox, so that they'll be available in the next session.
_settings.saveAsync(saveMyAddInSettingsCallback);
}
// Callback function after saving custom roaming settings.
function saveMyAddInSettingsCallback(asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
// Handle the failure.
}
}
Entfernen einer Roamingeinstellung
Die folgende JavaScript-Funktion , die das vorherige Beispiel noch erweitert, removeAddInSetting
zeigt, wie die RoamingSettings.remove-Methode verwendet wird, um die cookie
Einstellung zu entfernen und alle Roamingeinstellungen im Postfach zu speichern.
// Remove an add-in setting.
function removeAddInSetting()
{
_settings.remove("cookie");
// Save changes to the roaming settings for the mailbox, so that they'll be available in the next Outlook session.
_settings.saveAsync(saveMyAddInSettingsCallback);
}
Probieren Sie das Codebeispiel in Script Lab
Um zu erfahren, wie Sie ein RoamingSettings-Objekt erstellen und verwalten, rufen Sie das Script Lab für Outlook-Add-In ab, und probieren Sie das Beispiel "Add-In-Einstellungen verwenden" aus. Weitere Informationen zum Script Lab finden Sie unter Erkunden der Office JavaScript-API mithilfe von Script Lab.
Sie können Daten für ein bestimmtes Element im Benutzerpostfach mit dem CustomProperties-Objekt angeben. Ihr Add-In könnte beispielsweise bestimmte Nachrichten kategorisieren und die Kategorie mithilfe der benutzerdefinierten Eigenschaft messageCategory
kennzeichnen. Wenn Ihr Mail-Add-In Termine aus Besprechungsvorschlägen in einer Nachricht erstellt, können Sie mit einer benutzerdefinierten Eigenschaft diese Termine nachverfolgen. Dadurch wird sichergestellt, dass ihr E-Mail-Add-In nicht anbietet, den Termin ein zweites Mal zu erstellen, wenn der Benutzer die Nachricht erneut öffnet.
Ähnlich wie bei Roamingeinstellungen werden die Änderungen an benutzerdefinierten Eigenschaften in speicherinternen Kopien er Eigenschaften der aktuellen Outlook-Sitzung gespeichert. Um sicherzustellen, dass diese benutzerdefinierten Eigenschaften in der nächsten Sitzung verfügbar sind, verwenden Sie CustomProperties.saveAsync.
Auf diese add-in-spezifischen, elementspezifischen benutzerdefinierten Eigenschaften kann nur mithilfe des CustomProperties
-Objekts zugegriffen werden. Diese Eigenschaften unterscheiden sich von den benutzerdefinierten MAPI-basierten UserProperties im Outlook-Objektmodell und erweiterten Eigenschaften in Exchange-Webdiensten (EWS). Sie können nicht direkt auf das Outlook-Objektmodell, EWS oder Microsoft Graph zugreifen CustomProperties
. Informationen zum Zugreifen CustomProperties
mithilfe von Microsoft Graph oder EWS finden Sie im Abschnitt Abrufen benutzerdefinierter Eigenschaften mit Microsoft Graph oder EWS.
Hinweis
Benutzerdefinierte Eigenschaften sind nur für das Add-In verfügbar, das sie erstellt hat, und nur über das E-Mail-Element, in dem sie gespeichert wurden. Aus diesem Gründen werden Eigenschaften, die im Verfassenmodus festgelegt werden, nicht an Empfänger des E-Mail-Elements übertragen. Wenn eine Nachricht oder ein Termin mit benutzerdefinierten Eigenschaften gesendet wird, kann über das Element im Ordner Gesendete Elemente auf ihre Eigenschaften zugegriffen werden. Damit Empfänger die benutzerdefinierten Daten empfangen können, die Ihr Add-In festlegt, sollten Sie stattdessen InternetHeaders verwenden.
Verwenden benutzerdefinierter Eigenschaften
Bevor Sie benutzerdefinierte Eigenschaften verwenden können, müssen Sie sie durch Aufrufen der loadCustomPropertiesAsync-Methode laden. Nachdem Sie den Eigenschaftenbehälter erstellt haben, können Sie die Set - und get-Methoden verwenden, um benutzerdefinierte Eigenschaften hinzuzufügen und abzurufen. Sie müssen die saveAsync-Methode verwenden, um am Eigenschaftenbehälter vorgenommene Änderungen zu speichern.
Hinweis
Beachten Sie bei der Verwendung von benutzerdefinierten Eigenschaften in Outlook-Add-Ins Folgendes:
- Outlook auf Mac speichert keine benutzerdefinierten Eigenschaften zwischen. Wenn das Netzwerk des Benutzers ausfällt, können Add-Ins in Outlook auf Mac nicht auf ihre benutzerdefinierten Eigenschaften zugreifen.
- Im klassischen Outlook unter Windows werden benutzerdefinierte Eigenschaften, die im Verfassenmodus gespeichert wurden, nur beibehalten, nachdem das zu verfassende Element geschlossen wurde oder nach
Office.context.mailbox.item.saveAsync
dem Aufruf aufgerufen wird.
Probieren Sie das Codebeispiel in Script Lab
Um zu erfahren, wie Sie ein CustomProperties-Objekt erstellen und verwalten, rufen Sie das Script Lab für Outlook-Add-In ab, und probieren Sie das Beispiel "Arbeiten mit benutzerdefinierten Elementeigenschaften" aus. Weitere Informationen zum Script Lab finden Sie unter Erkunden der Office JavaScript-API mithilfe von Script Lab.
Abrufen benutzerdefinierter Eigenschaften mit Microsoft Graph oder EWS
Um CustomProperties mithilfe von Microsoft Graph oder EWS abzurufen, sollten Sie zuerst den Namen der MAPI-basierten erweiterten Eigenschaft bestimmen. Sie können die Eigenschaft dann auf die gleiche Weise abrufen wie eine MAPI-basierte erweiterte Eigenschaft.
Die Verwendung von Microsoft Graph oder EWS hängt davon ab, ob ein Add-In in einer lokalen Exchange Online- oder Exchange-Umgebung ausgeführt wird.
Exchange Online:
In Exchange Online Umgebungen kann Ihr Add-In eine Microsoft Graph-Anforderung für Nachrichten und Ereignisse erstellen, um diejenigen abzurufen, die bereits über benutzerdefinierte Eigenschaften verfügen. In Ihre Anforderung sollten Sie die MAPI-basierte CustomProperties-Eigenschaft und deren Eigenschaftensatz einschließen, indem Sie die Details unter Speichern benutzerdefinierter Eigenschaften für ein Element verwenden.
Das folgende Beispiel zeigt, wie Sie alle Ereignisse abrufen, für die von Ihrem Add-In benutzerdefinierte Eigenschaften festgelegt wurden. Außerdem wird sichergestellt, dass die Antwort den Wert der Eigenschaft enthält, sodass Sie weitere Filterlogik anwenden können.
Wichtig
Ersetzen Sie im folgenden Beispiel <app-guid>
durch die ID Ihres Add-Ins.
GET https://graph.microsoft.com/v1.0/me/events?$filter=singleValueExtendedProperties/Any
(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046}
Name cecp-<app-guid>' and ep/value ne null)
&$expand=singleValueExtendedProperties($filter=id eq 'String
{00020329-0000-0000-C000-000000000046} Name cecp-<app-guid>')
Weitere Beispiele zum Abrufen von mapI-basierten, einwertigen erweiterten Eigenschaften finden Sie unter Abrufen von singleValueLegacyExtendedProperty.
Exchange lokal
In lokalen Exchange-Umgebungen kann Ihr E-Mail-Add-In die CustomProperties
MAPI-basierte erweiterte Eigenschaft mithilfe des EWS GetItem-Vorgangs abrufen. Zugriff GetItem
auf serverseitiger Seite mithilfe eines Rückruftokens oder clientseitig mithilfe der mailbox.makeEwsRequestAsync-Methode . Geben Sie in der GetItem
Anforderung die CustomProperties
MAPI-basierte Eigenschaft in ihrem Eigenschaftensatz an. Verwenden Sie dazu die Details unter Wie werden benutzerdefinierte Eigenschaften für ein Element gespeichert.
Das folgende Beispiel zeigt, wie Sie ein Element und seine benutzerdefinierten Eigenschaften abrufen.
Wichtig
Ersetzen Sie im folgenden Beispiel <app-guid>
durch die ID Ihres Add-Ins.
let request_str =
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
'xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"' +
'xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"' +
'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
'<soap:Header xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"' +
'xmlns:wsa="http://www.w3.org/2005/08/addressing">' +
'<t:RequestServerVersion Version="Exchange2010_SP1"/>' +
'</soap:Header>' +
'<soap:Body>' +
'<m:GetItem>' +
'<m:ItemShape>' +
'<t:BaseShape>AllProperties</t:BaseShape>' +
'<t:IncludeMimeContent>true</t:IncludeMimeContent>' +
'<t:AdditionalProperties>' +
'<t:ExtendedFieldURI ' +
'DistinguishedPropertySetId="PublicStrings" ' +
'PropertyName="cecp-<app-guid>"' +
'PropertyType="String" ' +
'/>' +
'</t:AdditionalProperties>' +
'</m:ItemShape>' +
'<m:ItemIds>' +
'<t:ItemId Id="' +
Office.context.mailbox.item.itemId +
'"/>' +
'</m:ItemIds>' +
'</m:GetItem>' +
'</soap:Body>' +
'</soap:Envelope>';
Office.context.mailbox.makeEwsRequestAsync(
request_str,
function(asyncResult) {
if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
console.log(asyncResult.value);
}
else {
console.log(JSON.stringify(asyncResult));
}
}
);
Sie können auch weitere benutzerdefinierte Eigenschaften abrufen, wenn Sie sie in der Abfragezeichenfolge als weitere ExtendedFieldURI-Elemente angeben.
Erfahren Sie, wie benutzerdefinierte Eigenschaften in einem Element gespeichert werden
Benutzerdefinierte Eigenschaften, die von einem Add-In festgelegt werden, entsprechen nicht normalen MAPI-basierten Eigenschaften. Add-In-APIs serialisieren alle Add-Ins CustomProperties
als JSON-Nutzlast und speichern sie dann in einer einzelnen MAPI-basierten erweiterten Eigenschaft, deren Name cecp-<app-guid>
(<app-guid>
ist die ID Ihres Add-Ins) und die Eigenschaftensatz-GUID lautet {00020329-0000-0000-C000-000000000046}
. (Weitere Informationen zu diesem Objekt finden Sie unter Benutzerdefinierte Eigenschaften der Mail-App für MS-OXCEXT 2.2.5.) Sie können dann Microsoft Grpah oder EWS verwenden, um diese MAPI-basierte Eigenschaft abzurufen.
In der folgenden Tabelle sind gespeicherte verhalten benutzerdefinierte Eigenschaften in Nachrichten für verschiedene Outlook-Clients zusammengefasst.
Szenario |
Outlook im Web und auf dem neuen Windows-Client |
Klassisches Outlook unter Windows |
Outlook für Mac |
Neuer Verfassen |
null |
null |
null |
Antworten, allen antworten |
null |
null |
null |
Weiterleiten |
null |
Lädt die Eigenschaften des übergeordneten Elements. |
null |
Gesendetes Element aus dem neuen Verfassen |
null |
null |
null |
Gesendetes Element aus "Antworten" oder "Allen antworten" |
null |
null |
null |
Element von vorwärts gesendet |
null |
Entfernt die Eigenschaften des übergeordneten Elements, wenn sie nicht gespeichert wurden. |
null |
So behandeln Sie die Situation im klassischen Outlook unter Windows:
- Überprüfen Sie bei der Initialisierung Ihres Add-Ins auf vorhandene Eigenschaften, und behalten Sie sie bei Bedarf bei, oder löschen Sie sie.
- Schließen Sie beim Festlegen benutzerdefinierter Eigenschaften eine zusätzliche Eigenschaft ein, um anzugeben, ob die benutzerdefinierten Eigenschaften im Lesemodus hinzugefügt wurden. Dadurch können Sie unterscheiden, ob die Eigenschaft im Verfassenmodus erstellt oder vom übergeordneten Element geerbt wurde.
- Um zu überprüfen, ob der Benutzer eine Nachricht weiterleitet oder darauf antwortet, können Sie item.getComposeTypeAsync (verfügbar im Anforderungssatz 1.10) verwenden.
Wenn Sie nur daten speichern und darauf zugreifen müssen, während ein E-Mail-Element erstellt wird, verwenden Sie die SessionData-API . Da Daten nur für die Dauer der aktuellen Erstellungssitzung gespeichert werden, kann von einem Element, das als Entwurf gespeichert wurde, nicht auf Daten aus einem SessionData-Objekt zugegriffen werden. Dieses Verhalten gilt auch dann, wenn dasselbe Add-In verwendet wird.
Benutzerdefinierte Daten werden als Schlüssel-Wert-Paare im SessionData-Objekt gespeichert. Für jedes E-Mail-Element sind die Daten im SessionData-Objekt auf 50.000 Zeichen pro Add-In beschränkt. Das heißt, wenn mehrere Add-Ins benutzerdefinierte Sitzungsdaten für ein einzelnes E-Mail-Element festlegen, kann jedes Add-In ein SessionData-Objekt erstellen, das bis zu 50.000 Zeichen enthält.
Probieren Sie das Codebeispiel in Script Lab
Um zu erfahren, wie Sie ein SessionData-Objekt erstellen und verwalten, rufen Sie das Script Lab für Outlook-Add-In ab, und probieren Sie das Beispiel "Arbeiten mit Sitzungsdaten-APIs (Compose)" aus. Weitere Informationen zum Script Lab finden Sie unter Erkunden der Office JavaScript-API mithilfe von Script Lab.