Freigeben über


Einfügen von Daten in den Textkörper bei der Erstellung eines Termins oder einer Nachricht in Outlook

Verwenden Sie die asynchronen Methoden (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync und Body.setSelectedDataAsync), um den Texttyp abzurufen und Daten in den Textkörper eines Termins oder einer Nachricht einzufügen, die gerade erstellt wird. Diese asynchronen Methoden sind nur zum Verfassen von Add-Ins verfügbar. Um diese Methoden zu verwenden, stellen Sie sicher, dass Sie das Add-In-Manifest entsprechend eingerichtet haben, damit Outlook Ihr Add-In in Formularen zum Verfassen aktiviert, wie unter Erstellen von Outlook-Add-Ins für Verfassenformulare beschrieben.

In Outlook kann ein Benutzer eine Nachricht im Text-, HTML- oder Rich Text-Format (RTF) erstellen, und kann einen Termin im HTML-Format erstellen. Vor dem Einfügen von Daten müssen Sie zunächst das unterstützte Elementformat überprüfen, indem Sie aufrufen getTypeAsync, da Sie möglicherweise zusätzliche Schritte ausführen müssen. Der Wert, getTypeAsync der zurückgegeben wird, hängt vom ursprünglichen Elementformat sowie von der Unterstützung des Gerätebetriebssystems und der Anwendung ab, die im HTML-Format bearbeitet werden sollen. Nachdem Sie das Elementformat überprüft haben, legen Sie den coercionType Parameter von prependAsync oder setSelectedDataAsync entsprechend fest, um die Daten einzufügen, wie in der folgenden Tabelle gezeigt. Wenn Sie kein Argument angeben und setSelectedDataAsync davon ausgehen, prependAsync dass die einzufügenden Daten im Textformat vorliegen.

Einzufügende Daten Von getTypeAsync zurückgegebenes Elementformat zu verwendende coercionType
Text Text1 Text
HTML Text1 Text2
Text HTML Text/HTML
HTML HTML HTML

Hinweis

1 Gibt auf Tablets und Smartphones "Text" zurück, getTypeAsync wenn das Betriebssystem oder die Anwendung die Bearbeitung eines Elements, das ursprünglich in HTML erstellt wurde, nicht unterstützt.

2 Wenn die einzufügenden Daten HTML sind und getTypeAsync einen Texttyp für das aktuelle E-Mail-Element zurückgeben, müssen Sie Ihre Daten als Text neu organisieren und auf Office.CoercionType.TextfestlegencoercionType. Wenn Sie die HTML-Daten einfach in ein textformatiertes Element einfügen, zeigt die Anwendung die HTML-Tags als Text an. Wenn Sie versuchen, die HTML-Daten einzufügen und auf Office.CoercionType.HtmlfestzulegencoercionType, erhalten Sie eine Fehlermeldung.

Zusätzlich zum coercionType -Parameter verwenden , wie bei den meisten asynchronen Methoden in der Office-JavaScript-API , getTypeAsyncprependAsyncund setSelectedDataAsync andere optionale Eingabeparameter. Weitere Informationen zum Angeben dieser optionalen Eingabeparameter finden Sie unter "Übergeben optionaler Parameter an asynchrone Methoden" unter Asynchrone Programmierung in Office-Add-Ins.

Einfügen von Daten an der aktuellen Cursorposition

Dieser Abschnitt zeigt ein Codebeispiel, das verwendet, getTypeAsync um den Texttyp des Elements zu überprüfen, das gerade zusammengesetzt wird, und dann verwendet, setSelectedDataAsync um Daten an der aktuellen Cursorposition einzufügen.

Sie müssen eine Datenzeichenfolge als Eingabeparameter an setSelectedDataAsyncübergeben. Je nach Typ des Elementkörpers können Sie diese Datenfolge im Text- oder HTML-Format angeben. Wie bereits erwähnt, können Sie optional den Typ der Daten angeben, die in den coercionType Parameter eingefügt werden sollen. Um die status und Ergebnisse von setSelectedDataAsyncabzurufen, übergeben Sie eine Rückruffunktion und optionale Eingabeparameter an die -Methode, und extrahieren Sie dann die erforderlichen Informationen aus dem asyncResult-Ausgabeparameter des Rückrufs. Wenn die Methode erfolgreich ist, können Sie den Typ des Elementtexts aus der asyncResult.value -Eigenschaft abrufen, der entweder "text" oder "html" ist.

Wenn der Benutzer den Cursor nicht im Textkörper des Elements platziert hat, setSelectedDataAsync fügt die Daten oben im Textkörper ein. Wenn der Benutzer Text im Textkörper des Elements ausgewählt hat, setSelectedDataAsync ersetzt den markierten Text durch die von Ihnen angegebenen Daten. Beachten Sie, dass setSelectedDataAsync fehlschlagen kann, wenn der Benutzer beim Verfassen des Elements gleichzeitig die Cursorposition ändert. Die maximal zulässige Anzahl Zeichen, die Sie mit einem Mal eingeben können, ist auf 1000000 Zeichen beschränkt.

let item;

// Confirms that the Office.js library is loaded.
Office.onReady((info) => {
    if (info.host === Office.HostType.Outlook) {
        item = Office.context.mailbox.item;
        setItemBody();
    }
});

// Inserts data at the current cursor position.
function setItemBody() {
    // Identify the body type of the mail item.
    item.body.getTypeAsync((asyncResult) => {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            console.log(asyncResult.error.message);
            return;
        }

        // Insert data of the appropriate type into the body.
        if (asyncResult.value === Office.CoercionType.Html) {
            // Insert HTML into the body.
            item.body.setSelectedDataAsync(
                "<b> Kindly note we now open 7 days a week.</b>",
                { coercionType: Office.CoercionType.Html, asyncContext: { optionalVariable1: 1, optionalVariable2: 2 } },
                (asyncResult) => {
                    if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                        console.log(asyncResult.error.message);
                        return;
                    }

                    /*
                      Run additional operations appropriate to your scenario and
                      use the optionalVariable1 and optionalVariable2 values as needed.
                    */
            });
        }
        else {
            // Insert plain text into the body.
            item.body.setSelectedDataAsync(
                "Kindly note we now open 7 days a week.",
                { coercionType: Office.CoercionType.Text, asyncContext: { optionalVariable1: 1, optionalVariable2: 2 } },
                (asyncResult) => {
                    if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                        console.log(asyncResult.error.message);
                        return;
                    }

                    /*
                      Run additional operations appropriate to your scenario and
                      use the optionalVariable1 and optionalVariable2 values as needed.
                    */
            });
        }
    });
}

Einfügen von Daten am Anfang des Elementtexts

Alternativ können Sie verwenden prependAsync , um Daten am Anfang des Elementtexts einzufügen und die aktuelle Cursorposition zu ignorieren. Anders als der Einfügepunkt, prependAsync und setSelectedDataAsync verhalten sich auf ähnliche Weise. Sie müssen zunächst den Typ des Nachrichtentexts überprüfen, um zu vermeiden, dass html-Daten einer Nachricht im Textformat vorangestellt werden. Übergeben Sie dann die Datenzeichenfolge, die im Text- oder HTML-Format vorangestellt werden soll.prependAsync Die maximal zulässige Anzahl Zeichen, die Sie mit einem Mal voranstellen können, ist auf 1000000 Zeichen beschränkt.

Der folgende JavaScript-Code ruft zuerst auf getTypeAsync , um den Typ des Elementtexts zu überprüfen. Anschließend werden die Daten je nach Typ als HTML oder Text oben im Textkörper eingefügt.

let item;

// Confirms that the Office.js library is loaded.
Office.onReady((info) => {
    if (info.host === Office.HostType.Outlook) {
        item = Office.context.mailbox.item;
        prependItemBody();
    }
});


// Prepends data to the body of the item being composed.
function prependItemBody() {
    // Identify the body type of the mail item.
    item.body.getTypeAsync((asyncResult) => {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            console.log(asyncResult.error.message);
            return;
        }

        // Prepend data of the appropriate type to the body.
        if (asyncResult.value === Office.CoercionType.Html) {
            // Prepend HTML to the body.
            item.body.prependAsync(
                '<b>Greetings!</b>',
                { coercionType: Office.CoercionType.Html, asyncContext: { optionalVariable1: 1, optionalVariable2: 2 } },
                (asyncResult) => {
                    if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                        console.log(asyncResult.error.message);
                        return;
                    }

                    /*
                      Run additional operations appropriate to your scenario and
                      use the optionalVariable1 and optionalVariable2 values as needed.
                    */
            });
        }
        else {
            // Prepend plain text to the body.
            item.body.prependAsync(
                'Greetings!',
                { coercionType: Office.CoercionType.Text, asyncContext: { optionalVariable1: 1, optionalVariable2: 2 } },
                (asyncResult) => {
                    if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                        console.log(asyncResult.error.message);
                        return;
                    }

                    /*
                      Run additional operations appropriate to your scenario and
                      use the optionalVariable1 and optionalVariable2 values as needed.
                    */
            });
        }
    });
}

Siehe auch