Einfügen von Daten in den Textkörper bei der Erstellung eines Termins oder einer Nachricht in OutlookInsert data in the body when composing an appointment or message in Outlook

Asynchrone Methoden (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync und Body.setSelectedDataAsync) können zum Abrufen des Textkörpertyps und zum Einfügen von Daten in den Textkörper eines Termins oder einer Nachricht verwendet werden, die der Benutzer erstellt. Diese asynchronen Methoden sind nur für Verfassen-Add-Ins verfügbar. Um diese Methoden zu verwenden, müssen Sie sicherstellen, dass Sie das Add-in-Manifest ordnungsgemäß enigerichtet haben, sodass Outlook die Add-Ins in einem Formular zum Verfassen aktiviert, wie in Erstellen von Outlook-Add-Ins für Formulare zum Verfassen beschrieben.You can use the asynchronous methods (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync and Body.setSelectedDataAsync) to get the body type and insert data in the body of an appointment or message item that the user is composing. These asynchronous methods are available to only compose add-ins. To use these methods, make sure you have set up the add-in manifest appropriately so that Outlook activates your add-in in compose forms, as described in Create Outlook add-ins for compose forms.

In Outlook können Benutzer Nachrichten im Text-, HTML- oder Rich-Text-Format erstellen und Termine im HTML-Format. Vor dem Einfügen sollten Sie immer zuerst das unterstützte Elementformat durch Aufrufen von getTypeAsync überprüfen, da möglicherweise zusätzliche Schritte notwendig sind. Der Wert, der von getTypeAsync zurückgegeben wird, hängt vom ursprünglichen Elementformat ab sowie von der Unterstützung für das Betriebssystem des Geräts und den Host zum Bearbeiten des HTML-Formats (1). Legen Sie dann den Parameter coercionType von prependAsync oder setSelectedDataAsync dementsprechend fest (2), um Daten wie in der folgenden Tabelle dargestellt einzufügen. Wenn Sie kein Argument angeben, nehmen prependAsync und setSelectedDataAsync an, dass die einzufügenden Daten im Textformat vorliegen.In Outlook, a user can create a message in text, HTML, or Rich Text Format (RTF), and can create an appointment in HTML format. Before inserting, you should always first verify the supported item format by calling getTypeAsync, as you may need to take additional steps. The value that getTypeAsync returns depends on the original item format, as well as the support of the device operating system and host to editing in HTML format (1). Then set the coercionType parameter of prependAsync or setSelectedDataAsync accordingly (2) to insert the data, as shown in the following table. If you don't specify an argument, prependAsync and setSelectedDataAsync assume the data to insert is in text format.


Einzufügende DatenData to insert Von getTypeAsync zurückgegebenes ElementformatItem format returned by getTypeAsync Verwenden Sie diesen coercionTypeUse this coercionType
TextText Text (1)Text (1) TextText
HTMLHTML Text (1)Text (1) Text (2)Text (2)
TextText HTMLHTML Text/HTMLText/HTML
HTMLHTML HTMLHTML HTMLHTML
  1. Auf Tablets und Smartphones gibt getTypeAsync Office.MailboxEnums.BodyType.Text zurück, wenn das Betriebssystem oder der Host das HTML-basierte Bearbeiten von Elementen, die ursprünglich im HTML-Format erstellt wurden, nicht unterstützt.On tablets and smartphones, getTypeAsync returns Office.MailboxEnums.BodyType.Text if the operating system or host does not support editing an item, which was originally created in HTML, in HTML format.

  2. Wenn die einzufügenden Daten im HTML-Format vorliegen und getTypeAsync einen Texttyp für das betreffende Element zurückgibt, müssen Sie die Daten als Text reorganisieren und mit Office.MailboxEnums.BodyType.Text als coercionType einfügen. Wenn Sie die HTML-Daten mit „text“ als Koersionstyp einfügen, zeigt der Host die HTML-Tags als Text an. Wenn Sie versuchen, HTML-Daten mit Office.MailboxEnums.BodyType.Html als coercionType einzufügen, wird ein Fehler zurückgegeben.If your data to insert is HTML and getTypeAsync returns a text type for that item, reorganize your data as text and insert it with Office.MailboxEnums.BodyType.Text as coercionType. If you simply insert the HTML data with a text coercion type, the host would display the HTML tags as text. If you attempt to insert the HTML data with Office.MailboxEnums.BodyType.Html as coercionType, you will get an error.

Neben coercionType verwenden getTypeAsync, prependAsync und setSelectedDataAsync wie die meisten asynchronen Methoden in der JavaScript-API für Office weitere optionale Eingabeparameter. Weitere Informationen zur Festlegung dieser optionalen Eingabeparameter finden Sie im Abschnitt Übergeben von optionalen Parametern an asynchrone Methoden im Artikel Asynchrone Programmierung in Office-Add-Ins.In addition to coercionType, as with most asynchronous methods in the JavaScript API for Office, getTypeAsync, prependAsync and setSelectedDataAsync take other optional input parameters. For more information about specifying these optional input parameters, see passing optional parameters to asynchronous methods in Asynchronous programming in Office Add-ins.

Einfügen von Daten an der aktuellen CursorpositionInsert data at the current cursor position

In diesem Abschnitt finden Sie ein Codebeispiel, das getTypeAsync verwendet, um den Texttyp des Elements zu überprüfen, das gerade verfasst wird, und anschließend mithilfe von setSelectedDataAsync Daten an der aktuellen Cursorposition einfügt.This section shows a code sample that uses getTypeAsync to verify the body type of the item that is being composed, and then uses setSelectedDataAsync to insert data in the current cursor location.

Sie können eine Rückrufmethode und optionale Eingabeparameter an getTypeAsync übergeben und Status und Ergebnisse im Ausgabeparameter asyncResult abrufen. Wenn die Methode erfolgreich ausgeführt wird, können Sie den Elementtexttyp in der Eigenschaft AsyncResult.value abrufen, deren Wert entweder „text“ oder „html“ ist.You can pass a callback method and optional input parameters to getTypeAsync, and get any status and results in the asyncResult output parameter. If the method succeeds, you can get the type of the item body in the AsyncResult.value property, which is either "text" or "html".

Sie müssen eine Datenzeichenfolge als Eingabeparameter an setSelectedDataAsync übergeben. Je nach Typ des Elementtexts können Sie diese Datenzeichenfolge im Text- oder im HTML-Format angeben. Wie oben bereits erwähnt, können Sie optional den Typ der einzufügenden Daten im Parameter coercionType angeben. Zudem können Sie eine Rückrufmethode angeben sowie beliebige Parameter für diese Methode als optionale Eingabeparameter.You must pass a data string as an input parameter to setSelectedDataAsync. Depending on the type of the item body, you can specify this data string in text or HTML format accordingly. As mentioned above, you can optionally specify the type of the data to be inserted in the coercionType parameter. In addition, you can provide a callback method and any of its parameters as optional input parameters.

Wenn der Benutzer den Cursor nicht im Elementtext platziert hat, fügt setSelectedDataAsync die Daten zu Beginn des Texts ein. Wenn der Benutzer Text im Elementtext ausgewählt hat, ersetzt setSelectedDataAsync den ausgewählten Text durch die von Ihnen angegebenen Daten. Beachten Sie, dass setSelectedDataAsync fehlschlagen kann, wenn der Benutzer gleichzeitig die Cursorposition ändert und das Element verfasst. Die maximal zulässige Anzahl Zeichen, die Sie mit einem Mal eingeben können, beträgt 1.000.000 Zeichen.If the user hasn't placed the cursor in the item body, setSelectedDataAsync inserts the data at the top of the body. If the user has selected text in the item body, setSelectedDataAsync replaces the selected text by the data you specify. Note that setSelectedDataAsync can fail if the user is simultaneously changing the cursor position while composing the item. The maximum number of characters you can insert at one time is 1,000,000 characters.

Dieses Codebeispiel setzt eine Regel in dem Add-In voraus, die das Add-In in einem Formular zum Verfassen für einen Termin oder eine Nachricht wie unten dargestellt aktiviert.This code sample assumes a rule in the add-in manifest that activates the add-in in a compose form for an appointment or message, as shown below.

<Rule xsi:type="RuleCollection" Mode="Or">
  <Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit"/>
  <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit"/>
</Rule>
var item;

Office.initialize = function () {
    item = Office.context.mailbox.item;
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        // Set data in the body of the composed item.
        setItemBody();
    });
}


// Get the body type of the composed item, and set data in 
// in the appropriate data type in the item body.
function setItemBody() {
    item.body.getTypeAsync(
        function (result) {
            if (result.status == Office.AsyncResultStatus.Failed){
                write(result.error.message);
            }
            else {
                // Successfully got the type of item body.
                // Set data of the appropriate type in body.
                if (result.value == Office.MailboxEnums.BodyType.Html) {
                    // Body is of HTML type.
                    // Specify HTML in the coercionType parameter
                    // of setSelectedDataAsync.
                    item.body.setSelectedDataAsync(
                        '<b> Kindly note we now open 7 days a week.</b>',
                        { coercionType: Office.CoercionType.Html, 
                        asyncContext: { var3: 1, var4: 2 } },
                        function (asyncResult) {
                            if (asyncResult.status == 
                                Office.AsyncResultStatus.Failed){
                                write(asyncResult.error.message);
                            }
                            else {
                                // Successfully set data in item body.
                                // Do whatever appropriate for your scenario,
                                // using the arguments var3 and var4 as applicable.
                            }
                        });
                }
                else {
                    // Body is of text type. 
                    item.body.setSelectedDataAsync(
                        ' Kindly note we now open 7 days a week.',
                        { coercionType: Office.CoercionType.Text, 
                            asyncContext: { var3: 1, var4: 2 } },
                        function (asyncResult) {
                            if (asyncResult.status == 
                                Office.AsyncResultStatus.Failed){
                                write(asyncResult.error.message);
                            }
                            else {
                                // Successfully set data in item body.
                                // Do whatever appropriate for your scenario,
                                // using the arguments var3 and var4 as applicable.
                            }
                         });
                }
            }
        });

}

// Writes to a div with id='message' on the page.
function write(message){
    document.getElementById('message').innerText += message; 
}

Einfügen von Daten am Anfang des ElementtextsInsert data at the beginning of the item body

Alternativ können Sie prependAsync verwenden, um Daten am Anfang des Elementtexts einzufügen und die aktuelle Cursorposition zu ignorieren. Mit Ausnahme der Stelle, an der eingefügt wird, verhalten sich prependAsync und setSelectedDataAsync ähnlich:Alternatively, you can use prependAsync to insert data at the beginning of the item body and disregard the current cursor location. Other than the point of insertion, prependAsync and setSelectedDataAsync behave in similar ways:

  • Wenn Sie in einem Nachrichtenkörper HTML-Daten voranstellen, sollten Sie zunächst prüfen, ob der Typ des Nachrichtenkörpers verhindert, dass HTML-Daten einer Nachricht im Textformat vorangestellt werden können.If you are prepending HTML data in a message body, you should first check for the type of the message body to avoid prepending HTML data to a message in text format.

  • Übergeben Sie die folgenden Daten als Eingabeparameter an prependAsync: eine Datenzeichenfolge im Text- oder HTML-Format und optional das Format der einzufügenden Daten, eine Rückrufmethode sowie beliebige Parameter für diese Methode.Provide the following as input parameters to prependAsync: a data string in either text or HTML format, and optionally the format of the data to be inserted, a callback method and any of its parameters.

  • Die maximal zulässige Anzahl Zeichen, die Sie mit einem Mal voranstellen können, ist auf 1000000 Zeichen beschränkt.The maximum number of characters you can prepend at one time is 1,000,000 characters.

Der folgende JavaScript-Code ist Teil eines Beispiel-Add-Ins, das in Formularen zum Verfassen von Terminen und Nachrichten aktiviert wird. Im Beispiel wird getTypeAsync aufgerufen, um den Typ des Elementtexts zu überprüfen. Anschließend werden HTML-Daten am Anfang des Elementtexts eingefügt, wenn das Element ein Termin oder eine HTML-Nachricht ist. Andernfalls werden die Daten im Textformat eingefügt.The following JavaScript code is part of a sample add-in that is activated in compose forms of appointments and messages. The sample calls getTypeAsync to verify the type of the item body, inserts HTML data to the top of the item body if the item is an appointment or HTML message, otherwise inserts the data in text format.

var item;

Office.initialize = function () {
    item = Office.context.mailbox.item;
    // Checks for the DOM to load using the jQuery ready function.
    $(document).ready(function () {
        // After the DOM is loaded, app-specific code can run.
        // Insert data in the top of the body of the composed 
        // item.
        prependItemBody();
    });
}

// Get the body type of the composed item, and prepend data  
// in the appropriate data type in the item body.
function prependItemBody() {
    item.body.getTypeAsync(
        function (result) {
            if (result.status == Office.AsyncResultStatus.Failed){
                write(asyncResult.error.message);
            }
            else {
                // Successfully got the type of item body.
                // Prepend data of the appropriate type in body.
                if (result.value == Office.MailboxEnums.BodyType.Html) {
                    // Body is of HTML type.
                    // Specify HTML in the coercionType parameter
                    // of prependAsync.
                    item.body.prependAsync(
                        '<b>Greetings!</b>',
                        { coercionType: Office.CoercionType.Html, 
                        asyncContext: { var3: 1, var4: 2 } },
                        function (asyncResult) {
                            if (asyncResult.status == 
                                Office.AsyncResultStatus.Failed){
                                write(asyncResult.error.message);
                            }
                            else {
                                // Successfully prepended data in item body.
                                // Do whatever appropriate for your scenario,
                                // using the arguments var3 and var4 as applicable.
                            }
                        });
                }
                else {
                    // Body is of text type. 
                    item.body.prependAsync(
                        'Greetings!',
                        { coercionType: Office.CoercionType.Text, 
                            asyncContext: { var3: 1, var4: 2 } },
                        function (asyncResult) {
                            if (asyncResult.status == 
                                Office.AsyncResultStatus.Failed){
                                write(asyncResult.error.message);
                            }
                            else {
                                // Successfully prepended data in item body.
                                // Do whatever appropriate for your scenario,
                                // using the arguments var3 and var4 as applicable.
                            }
                         });
                }
            }
        });

}

// Writes to a div with id='message' on the page.
function write(message){
    document.getElementById('message').innerText += message; 
}

Siehe auchSee also