Einfügen von Daten in den Textkörper bei der Erstellung eines Termins oder einer Nachricht 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.

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.

Einzufügende Daten Von getTypeAsync zurückgegebenes Elementformat Verwenden Sie diesen coercionType
Text Text (1) Text
HTML Text (1) Text (2)
Text HTML Text/HTML
HTML HTML HTML
  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.

  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.

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.

So werden Daten an der aktuellen Mauszeigerposition eingefügt

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.

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.

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.

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.

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.

<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ügt

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:

  • 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.

  • 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.

  • Die maximal zulässige Anzahl Zeichen, die Sie mit einem Mal voranstellen können, ist auf 1000000 Zeichen beschränkt.

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.

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; 
}

Zusätzliche Ressourcen