Partager via


Insérer des données dans le corps lors de la composition d’un rendez-vous ou d’un message dans Outlook

Utilisez les méthodes asynchrones (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync et Body.setSelectedDataAsync) pour obtenir le type de corps et insérer des données dans le corps d’un rendez-vous ou d’un message en cours de composition. Ces méthodes asynchrones sont uniquement disponibles pour composer des compléments. Pour utiliser ces méthodes, vérifiez que vous avez configuré le manifeste de complément de manière appropriée afin qu’Outlook active votre complément dans les formulaires de composition, comme décrit dans Créer des compléments Outlook pour les formulaires de composition.

Dans Outlook, un utilisateur peut créer un message au format texte, HTML ou RTF, ainsi qu’un rendez-vous au format HTML. Avant d’insérer des données, vous devez d’abord vérifier le format d’élément pris en charge en appelant getTypeAsync, car vous devrez peut-être effectuer des étapes supplémentaires. La valeur retournée getTypeAsync dépend du format d’élément d’origine, ainsi que de la prise en charge du système d’exploitation de l’appareil et de l’application à modifier au format HTML. Une fois que vous avez vérifié le format de l’élément, définissez le coercionType paramètre de prependAsync ou setSelectedDataAsync en conséquence pour insérer les données, comme indiqué dans le tableau suivant. Si vous ne spécifiez pas d’argument et prependAsyncsetSelectedDataAsync que vous supposez que les données à insérer sont au format texte.

Données à insérer Format de l’élément retourné par getTypeAsync coercionType à utiliser
Texte Texte1 Texte
HTML Texte1 Texte2
Texte HTML Texte/HTML
HTML HTML HTML

Remarque

1 Sur les tablettes et les smartphones, getTypeAsync retourne « Texte » si le système d’exploitation ou l’application ne prend pas en charge la modification d’un élément, qui a été créé à l’origine en HTML, au format HTML.

2 Si vos données à insérer sont html et getTypeAsync retournent un type de texte pour l’élément de courrier actif, vous devez réorganiser vos données en tant que texte et définir coercionType sur Office.CoercionType.Text. Si vous insérez simplement les données HTML dans un élément au format texte, l’application affiche les balises HTML sous forme de texte. Si vous essayez d’insérer les données HTML et que vous définissez sur coercionTypeOffice.CoercionType.Html, vous obtenez une erreur.

En plus du paramètre , comme avec la coercionType plupart des méthodes asynchrones dans l’API JavaScript Office, getTypeAsync, prependAsyncet setSelectedDataAsync prennent d’autres paramètres d’entrée facultatifs. Pour plus d’informations sur la façon de spécifier ces paramètres d’entrée facultatifs, consultez « Passage de paramètres facultatifs à des méthodes asynchrones » dans Programmation asynchrone dans les compléments Office.

Insertion de données à l’emplacement du curseur

Cette section présente un exemple de code qui utilise getTypeAsync pour vérifier le type de corps de l’élément en cours de composition, puis utilise pour insérer des setSelectedDataAsync données à l’emplacement du curseur actuel.

Vous devez passer une chaîne de données en tant que paramètre d’entrée à setSelectedDataAsync. Selon le type de corps de l’élément, vous pouvez spécifier cette chaîne de données au format texte ou HTML. Comme mentionné précédemment, vous pouvez éventuellement spécifier le type des données à insérer dans le coercionType paramètre . Pour obtenir les status et les résultats de , transmettez une fonction de setSelectedDataAsyncrappel et des paramètres d’entrée facultatifs à la méthode, puis extrayez les informations nécessaires à partir du paramètre de sortie asyncResult du rappel. Si la méthode réussit, vous pouvez obtenir le type du corps de l’élément à partir de la asyncResult.value propriété , qui est « text » ou « html ».

Si l’utilisateur n’a pas placé le curseur dans le corps de l’élément, setSelectedDataAsync insère les données en haut du corps. Si l’utilisateur a sélectionné du texte dans le corps de l’élément, setSelectedDataAsync remplace le texte sélectionné par les données que vous spécifiez. Notez que setSelectedDataAsync peut échouer si l’utilisateur change simultanément la position du curseur lors de la composition de l’élément. Vous pouvez insérer simultanément jusqu’à 1 000 000 caractères.

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.
                    */
            });
        }
    });
}

Insertion de données au début du corps de l’élément

Vous pouvez également utiliser prependAsync pour insérer des données au début du corps de l’élément et ignorer l’emplacement actuel du curseur. Autre que le point d’insertion, prependAsync et setSelectedDataAsync se comportent de manière similaire. Vous devez d’abord case activée le type du corps du message pour éviter de précédencer des données HTML à un message au format texte. Ensuite, passez la chaîne de données à ajouter au format texte ou HTML à prependAsync. Vous pouvez ajouter simultanément jusqu’à 1 000 000 caractères.

Le code JavaScript suivant appelle getTypeAsync d’abord pour vérifier le type du corps de l’élément. Ensuite, selon le type, il insère les données au format HTML ou texte en haut du corps.

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.
                    */
            });
        }
    });
}

Voir aussi