Aufgabenbereiche und Beibehalten von Einstellungen

Abgeschlossen

In dieser Lektion erfahren Sie, wie Sie Aufgabenbereiche in Outlook-Add-Ins verwenden können und wie Benutzereinstellungen für die geräteübergreifende Verwendung gespeichert werden.

Anheftbare Aufgabenbereiche

Wenn ein Benutzer einen Add-In-Aufgabenbereich für eine Nachricht im Lesebereich geöffnet hat und dann eine neue Nachricht auswählt, wird der Aufgabenbereich standardmäßig automatisch geschlossen. Durch das Anheften bleibt der Aufgabenbereich aktiviert.

Screenshot eines anheftbaren Aufgabenbereichs als Beispiel.

Anheftbare Aufgabenbereiche sind für häufig genutzte Add-ins ideal. Bei einem häufig verwendeten Add-in möchte der Benutzer diesen Bereich möglicherweise geöffnet lassen, ohne dass das Add-in für jede Nachricht erneut aktiviert werden muss.

Hinweis

Anheftbare Aufgabenbereiche stehen derzeit nur Microsoft 365-Abonnenten zur Verfügung, die Folgendes verwenden:

  • Outlook 2016 oder höher für Windows (Build 7668.2000 oder höher für Benutzer in aktuellen oder Office Insider-Kanälen, Build 7900.xxxx oder höher für Benutzer in verzögerten Kanälen)
  • Outlook 2016 oder höher für Mac (Version 16.13.503 oder höher)
  • Modernes Outlook im Web

Entwickler müssen im Manifest angeben, dass der Aufgabenbereich das Anheften unterstützt, und nach neuen Elementauswahlen zum Aktualisieren der Benutzeroberfläche des Aufgabenbereichs „Lauschen“.

Implementieren eines anheftbaren Aufgabenbereichs

Zum Implementieren eines anheftbaren Aufgabenbereichs fügen Sie das SupportsPinning-Element zum Add-In-Manifest hinzu:

<Action xsi:type="ShowTaskpane">
  <SourceLocation resid="readTaskPaneUrl" />
  <SupportsPinning>true</SupportsPinning>
</Action>

// Set up ItemChanged event to listen for new item selections in Outlook
Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, function(eventArgs) {
  // Update UI based on the new current item...this should check for null item
});

Sie müssen auch einen Handler für das ItemChanged-Ereignis implementieren, damit Ihr Add-In die Benutzeroberfläche aktualisieren kann, sobald ein neues Element ausgewählt wird.

Der ItemChanged-Handler sollte für null verantwortlich sein, da der Benutzer möglicherweise keine Auswahl hat, wodurch ein null-Element zurückgegeben würde.

Office.js für E-Mail-Add-Ins

Sehen wir uns einige allgemeine Aufgaben von Entwicklern an, die diese beim Erstellen von Add-Ins für Outlook mit Office.js zu erledigen haben.

In den Nachrichtentextbereich schreiben

Das folgende Beispiel zeigt einige grundlegende Vorgänge im Zusammenhang mit dem Nachrichtentexten. Die body.getAsync()-Methode wird verwendet, um den Textkörper einer Nachricht zu lesen. Achten Sie auf den Coercion-Typ, der festgelegt wurde. In diesem Beispiel bitten wir darum, den Inhalt als HTML zurückzugeben.

Bevor Sie Daten in den Nachrichtentext einfügen, sollten Sie mithilfe der body.getTypeAsync()-Methode das Format der Nachricht überprüfen.

In diesem Beispiel wird gezeigt, wie Daten an zwei verschiedenen Stellen in der Nachricht eingefügt werden:

  • an der Position des aktuellen Cursors
  • am Beginn des Textkörpers
// Get item body
item.body.getAsync(coercionType: Office.CoercionType.Html, function (asyncResult) {
  // asyncResult.value;
}
// Insert data in item body
item.body.getTypeAsync(function (r) { // check the format of the message body
  if (r.status != Office.AsyncResultStatus.Failed && r.value == Office.MailboxEnums.BodyType.Html) {
    // Insert data at the current cursor position
    item.body.setSelectedDataAsync("<b>Hello!</b>", { coercionType: Office.CoercionType.Html,
      asyncContext: { var3: 1, var4: 2 } }, function (asyncResult) {
    });
    // Insert data at the beginning of the item body
    item.body.prependAsync("<b>Hello!</b>", { coercionType: Office.CoercionType.Html,
      asyncContext: { var3: 1, var4: 2 } }, function (asyncResult) {
    });
...

Empfänger von Nachrichten und Termininformationen abrufen oder festlegen

Das folgende Beispiel zeigt, wie die Empfänger sowohl von Nachrichten und als auch Termininformationen abgerufen und festgelegt werden.

Die Methode getAsync() wird hauptsächlich für Add-Ins zum Verfassen verwendet. Add-Ins zum Lesen bieten direkten Zugriff auf Empfänger mithilfe der Eigenschaften item.to. item.cc und item.bcc.

Jeder Empfänger wird mithilfe einer Objektmatrix festgelegt, wobei jedes Objekt über die Eigenschaften displayName und emailAddress verfügt.

// Get recipients
const item = Office.context.mailbox.item;
let toRecipients;
if (item.itemType == Office.MailboxEnums.ItemType.Appointment) // Handle appointment vs message
  toRecipients = item.requiredAttendees;
else
  toRecipients = item.to;

// Perform the async get (compose add-in…read add-in can simply call item.to)
toRecipients.getAsync(function (asyncResult) { };

// Perform the async set
toRecipients.setAsync(
  [
    {
      "displayName":"Graham Durkin",
      "emailAddress":"graham@contoso.com"
    },{
      "displayName" : "Donnie Weinberg",
      "emailAddress" : "donnie@contoso.com"
    }
  ], function (r) {
        // check status.
});

Hinweis

Das Beispiel befasst sich mit den erforderlichen Teilnehmern und Empfängern im Feld „An“. Es funktioniert jedoch auch für optionale Teilnehmer und Empfänger in den Feldern „Cc“ und „Bcc“.

Terminserie abrufen oder festlegen

In diesem Beispiel wird gezeigt, wie Sie mithilfe des SeriesTime-Objekts eine Terminserien-Einstellung vornehmen, bei der es sich um ein etwas komplexeres Objekt handelt.

// Get and set recurrence
const seriesTimeObject = new Office.SeriesTime();
seriesTimeObject.setStartDate(2019,10,2);
seriesTimeObject.setEndDate(2019,11,2);
seriesTimeObject.setStartTime(10,30);
seriesTimeObject.setDuration(30);

const pattern = {
  "seriesTime": seriesTimeObject,
  "recurrenceType": "weekly",
  "recurrenceProperties": {"interval": 1, "days": ["tue", "thu"]},
  "recurrenceTimeZone": {"name": "Pacific Standard Time"}};

// Set recurrence
Office.context.mailbox.item.recurrence.setAsync(pattern, function(asyncResult) { .. });
// Get recurrence
Office.context.mailbox.item.recurrence.getAsync(function(asyncResult) { .. });

Roaming-Einstellungen

Roaming-Einstellungen sind ein wertvolles Tool für ein Add-In, um konfigurierbare Informationen zu speichern, die auf dem E-Mail-Server gespeichert sind und auf jedem Gerät zur Verfügung stehen.

Das folgende Beispiel zeigt, wie sich die Roaming-Einstellung eines Benutzers abrufen, festlegen und entfernen lässt.

// Roaming Settings
Office.initialize = function () {
  const settings = Office.context.roamingSettings;

  // Save roaming settings for the mailbox to the server so always available
  settings.set("cookie", Date());
  settings.saveAsync(function(asyncResult) {});

  // Remove a roaming setting
  settings.remove("cookie");
  settings.saveAsync(function(asyncResult) {});

  // Get roaming setting
  const val = settings.get("cookie");
}

Token und APIs (Exchange-Webdienste)

In diesem Beispiel wird gezeigt, wie Sie die Exchange-Webdienste (EWS) aus einem Add-In mithilfe von Office.js aufrufen können.

// Call Exchange Web Services (EWS)
const mailbox = Office.context.mailbox;
mailbox.makeEwsRequestAsync(mailbox.item.itemId, function(result) {
  // result.value contains the EWS getItem information in XML format
  const response = $.parseXML(result.value);
  const extendedProps = response.getElementsByTagName("ExtendedProperty")
});

// Note add-ins calling EWS must be installed by an Exchange admin

Hinweis

Wenn Sie die EWS aus einem Add-In aufrufen möchten, muss ein Exchange-Administrator das Add-In installieren, und Sie müssen alle XML-Dateien analysieren, die mit den EWS in Ihrem Add-In gesendet und empfangen wurden.

Abrufen von Anlagen

Das folgende Beispiel zeigt, wie Sie Anlagen mithilfe von Office.js abrufen können.

Outlook-Add-Ins können die Anlagen eines ausgewählten Elements nicht direkt vom Client aus übergeben. Stattdessen kann Outlook ein OAuth 2.0-Zugriffstoken zurückgeben, mit dem das Add-In die Outlook-REST-APIs aufrufen kann.

// Get attachments
const svcRequest = { attachmentToken: '', ewsUrl: Office.context.mailbox.ewsUrl, attachments: [] };
Office.context.mailbox.getCallbackTokenAsync(function(asyncResult, userContext) {
  // get access token returned from getCallbackTokenAsync and capture attachment metadata
  svcRequest.attachmentToken = asyncResult.value;
  for (let i = 0; i < mailbox.item.attachments.length; i++) {
    svcRequest.attachments[i] = JSON.parse(JSON.stringify(mailbox.item.attachments[i].$0_0));
  }
  $.ajax({
    url: './api/YourApiFprProcessingAttachments',
    type: 'POST',
    data: JSON.stringify(svcRequest), // contains metadata on all attachments and access token
    contentType: 'application/json;charset=utf-8'
  })
});

Anlagen hinzufügen oder entfernen

Das folgende Beispiel zeigt, wie Sie eine Anlage aus einem Outlook-Element hinzufügen und entfernen können.

// Attach a file
Office.context.mailbox.item.addFileAttachmentAsync(
  'https://webserver/picture.png',
  'picture.png', { asyncContext: null }, function (asyncResult) {
    // Validate status asyncResult.status
  }
);

// Attach an Outlook item
Office.context.mailbox.item.addItemAttachmentAsync(
  itemId,
  'Welcome message', { asyncContext: null }, function (asyncResult) {
    // Validate status asyncResult.status
  }
);

// Remote an attachment
Office.context.mailbox.item.removeAttachmentAsync(
  attachmentId,
  { asyncContext: null }, function (asyncResult) {
    // Validate status asyncResult.status
  }
);

Zusammenfassung

In dieser Lerneinheit haben Sie erfahren, wie Sie Aufgabenbereiche in Outlook-Add-ins verwenden können und wie Sie Benutzereinstellungen für die geräteübergreifende Verwendung speichern.