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

Sie können die asynchronen Methoden (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync und Body.setSelectedDataAsync) verwenden, um den Textbereichstyp abzurufen und Daten in den Textbereich eines Termin- oder Nachrichtenelements einzufügen, den der Benutzer verfasst.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. Diese asynchronen Methoden sind nur in Erstellungs-Add-Ins verfügbar. Vergewissern Sie sich, dass Sie das Add-In-Manifest entsprechend für Outlook eingerichtet haben, damit das Add-In in Erstellformularen aktiviert wird, wie in Erstellen von Outlook-Add-Ins für Formulare zum Verfassen beschrieben.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 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 sollten Sie das unterstützte Elementformat durch Aufrufen von getTypeAsync prü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 coercionType-Parameter 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 wird von getTypeAsyncOffice.MailboxEnums.BodyType.Text zurückgegeben, wenn das Betriebssystem oder der Host das Bearbeiten von Elementen, die ursprünglich mit HTML, 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 einzugebenden Daten im HTML-Format vorhanden sind, und von getTypeAsync ein Texttyp für dieses Element zurückgegeben wird, organisieren Sie die Daten als Text neu, und fügen Sie sie mit Office.MailboxEnums.BodyType.Text als coercionType ein. Wenn Sie die HTML-Daten mit einem Koersionstyp „Text“ 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, tritt ein Fehler auf.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, wie bei den meisten asynchronen Methoden in JavaScript-API für Office, verwenden getTypeAsync, prependAsync und setSelectedDataAsync weitere optionale Eingabeparameter. Weitere Informationen zum Angeben dieser optionalen Eingabeparameter finden Sie unter Übergeben von optionalen Parametern an asynchrone Methoden in 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.

So werden Daten an der aktuellen Mauszeigerposition eingefügtTo insert data at the current cursor position

In diesem Abschnitt wird ein Codebeispiel gegeben, das getTypeAsync verwendet, um den Textkörper des Elements, das gerade verfasst wird, zu prüfen, und mit dem anschließend mithilfe von setSelectedDataAsync Daten an der aktuellen Mauszeigerposition eingefügt werden.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 asyncResult-Ausgabeparameter abrufen. Wenn die Methode erfolgreich ist, können Sie den Textkörpertyp in der AsyncResult.value-Eigenschaft abrufen, die 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 Datenfolge als Eingabeparameter an setSelectedDataAsync übergeben. Je nach Typ des Elementkörpers können Sie diese Datenfolge im Text- oder HTML-Format angeben. Wie oben bereits erwähnt, können Sie den Typ der Daten, die in den coercionType-Parameter eingegeben werden sollen, wahlweise angeben. Zudem können Sie eine Rückrufmethode und jeden ihrer Parameter als optionale Eingabeparameter bereitstellen.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 Mauszeiger nicht im Textkörper platziert hat, fügt setSelectedDataAsync die Daten zu Beginn des Textkörpers ein. Wenn der Benutzer im Textkörper Text ausgewählt hat, ersetzt setSelectedDataAsync den ausgewählten Text mit den von Ihnen angegebenen Daten. Beachten Sie, dass setSelectedDataAsync versagen kann, wenn der Benutzer gleichzeitig die Mauszeigerposition ändert und das Element verfasst. Die maximal zulässige Anzahl Zeichen, die Sie mit einem Mal eingeben können, ist auf 1000000 Zeichen beschränkt.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; 
}

So werden Daten zu Beginn des Textkörpers eines Elements eingefügtTo insert data at the beginning of the item body

Alternativ können Sie prependAsync verwenden, um zu Beginn des Elementtextkörpers Daten einzufügen und die aktuelle Mauszeigerposition zu irgnorieren. Anders als der Einfügepunkt 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.

  • Stellen Sie die folgenden Daten als Eingabedaten für prependAsync bereit: eine Datenfolge, entweder im Textformat oder im HTML-Format und wahlweise das Format der Daten, die eingefügt werden sollen, eine Rückrufmethode und ihre Parameter.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, die in Formularen zum Verfassen von Terminen und Nachrichten aktiviert wird. Im Beispiel wird getTypeAsync abgerufen, um den Typ des Textkörpers des Elements zu prüfen; außerdem werden HTML-Daten zu Beginn des Textkörpers eingegeben, wenn das Element ein Termin oder eine HTML-Nachricht ist; andernfalls werden die Daten im Textformat eingegeben.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