Vous pouvez obtenir le corps d’un message ou d’un rendez-vous en mode lecture et composition. Pour récupérer le corps d’un élément de courrier, appelez Office.context.mailbox.item.body.getAsync. Lorsque vous appelez la getAsync
méthode , vous devez spécifier le format du corps retourné dans le coercionType
paramètre . Par exemple, vous pouvez obtenir le corps au format HTML ou texte brut.
L’exemple suivant obtient le corps d’un élément au format HTML.
// Get the current body of the message or appointment.
Office.context.mailbox.item.body.getAsync(Office.CoercionType.Html, (bodyResult) => {
if (bodyResult.status === Office.AsyncResultStatus.Failed) {
console.log(`Failed to get body: ${bodyResult.error.message}`);
return;
}
const body = bodyResult.value;
// Perform additional operations here.
});
Obtenir le corps des réponses aux messages dans Outlook sur le web ou dans le nouvel Outlook sur Windows
Dans Outlook sur le web et lanouvelle version d’Outlook sur Windows, les utilisateurs peuvent organiser leurs messages en tant que conversations ou messages individuels dans paramètres>> Organization > de disposition dumessage. Ce paramètre affecte la partie du corps d’un message affichée à l’utilisateur, en particulier dans les threads de conversation avec plusieurs messages. En fonction du paramètre, le contenu de l’ensemble du thread de conversation ou du message actuel s’affiche. Pour plus d’informations sur le paramètre Organisation des messages, voir Modifier l’affichage de la liste des messages dans Outlook.
Lorsque vous appelez Office.context.mailbox.item.body.getAsync
sur une réponse de message, tout le corps d’un thread de conversation est retourné. Si vous souhaitez que le corps renvoyé reflète le paramètre Organisation des messages de l’utilisateur, vous pouvez spécifier l’option bodyMode dans l’appel getAsync
. Le tableau suivant répertorie la partie du corps retournée en fonction de la bodyMode
configuration.
configuration de bodyMode |
Effet sur le corps |
bodyMode n’est pas spécifié dans l’appel getAsync |
Le corps entier du thread de conversation est retourné. |
bodyMode est défini sur Office.MailboxEnums.BodyMode.FullBody |
Le corps entier du thread de conversation est retourné. |
bodyMode est défini sur Office.MailboxEnums.BodyMode.HostConfig |
Si Organisation des messages est défini sur Regrouper les messages par conversation>Tous les messages de la conversation sélectionnée ou Afficher les e-mails regroupés par conversation>Le plus récent en haut/le plus récent en bas, seul le corps de la réponse actuelle est retourné.
Si l’organisation des messages est définie sur Messages individuels : Ne pas regrouper les messages>Un seul message ou Afficher les e-mails sous forme de messages individuels, le corps entier du thread de conversation est retourné. |
Remarque
L’option bodyMode
est ignorée dans Outlook sur Windows (classique), sur Mac et sur les appareils mobiles.
L’exemple suivant spécifie l’option bodyMode
permettant d’honorer le paramètre de message de l’utilisateur.
Office.context.mailbox.item.body.getAsync(
Office.CoercionType.Html,
{ bodyMode: Office.MailboxEnums.BodyMode.HostConfig },
(bodyResult) => {
if (bodyResult.status === Office.AsyncResultStatus.Failed) {
console.log(`Failed to get body: ${bodyResult.error.message}`);
return;
}
const body = bodyResult.value;
// Perform additional operations here.
}
);
Utilisez les méthodes asynchrones (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync et Body.setSelectedDataAsync) pour obtenir le type de corps, puis 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 prependAsync
setSelectedDataAsync
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 coercionType
Office.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
, prependAsync
et 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 setSelectedDataAsync
rappel 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.
*/
});
}
});
}
Définir le corps des réponses aux messages dans Outlook sur le web ou dans le nouvel Outlook sur Windows
Dans Outlook sur le web et lanouvelle version d’Outlook sur Windows, les utilisateurs peuvent organiser leurs messages en tant que conversations ou messages individuels dans paramètres>> Organization > de disposition dumessage. Ce paramètre affecte la partie du corps d’un message affichée à l’utilisateur, en particulier dans les threads de conversation avec plusieurs messages. En fonction du paramètre, le contenu de l’ensemble du thread de conversation ou du message actuel s’affiche. Pour plus d’informations sur le paramètre Organisation des messages, voir Modifier l’affichage de la liste des messages dans Outlook.
Lorsque vous appelez Office.context.mailbox.item.body.setAsync
sur une réponse de message, le corps entier d’un thread de conversation est remplacé par le texte que vous spécifiez. Si vous souhaitez respecter le paramètre Organisation des messages de l’utilisateur et remplacer uniquement le corps de la réponse actuelle, vous pouvez spécifier l’option bodyMode dans l’appel setAsync
. Le tableau suivant répertorie les configurations et la bodyMode
façon dont chacune affecte le corps du message en cours de définition.
configuration de bodyMode |
Effet sur le corps |
bodyMode n’est pas spécifié dans l’appel setAsync |
Le corps entier du thread de conversation est remplacé. Cela s’applique même si les messages d’un utilisateur sont organisés par conversation. Dans ce scénario, le paramètre de l’utilisateur est temporairement remplacé par Messages individuels : Ne pas regrouper les messages>un seul message ou Afficher les e-mails sous forme de messages individuels pendant l’appel setAsync . Une notification est présentée à l’utilisateur pour l’avertir de cette modification. Une fois l’appel terminé, le paramètre de l’utilisateur est rétabli. |
bodyMode est défini sur Office.MailboxEnums.BodyMode.FullBody |
Le corps entier du thread de conversation est remplacé. Cela s’applique même si les messages d’un utilisateur sont organisés par conversation. Dans ce scénario, le paramètre de l’utilisateur est temporairement remplacé par Messages individuels : Ne pas regrouper les messages>un seul message ou Afficher les e-mails sous forme de messages individuels pendant l’appel setAsync . Une notification est présentée à l’utilisateur pour l’avertir de cette modification. Une fois l’appel terminé, le paramètre de l’utilisateur est rétabli. |
bodyMode est défini sur Office.MailboxEnums.BodyMode.HostConfig |
Si Organisation des messages est défini sur Regrouper les messages par conversation>Tous les messages de la conversation sélectionnée ou Afficher l’e-mail groupé par conversation>Le plus récent en haut/le plus récent en bas, seul le corps de la réponse actuelle est remplacé.
Si l’organisation des messages est définie sur Messages individuels : ne pas regrouper les messages>Un seul message ou Afficher les e-mails en tant que messages individuels, le corps entier du thread de conversation est remplacé. |
Remarque
L’option bodyMode
est ignorée dans Outlook sur Windows (classique), sur Mac et sur les appareils mobiles.
L’exemple suivant spécifie l’option bodyMode
permettant d’honorer le paramètre de message de l’utilisateur.
Office.context.mailbox.item.body.setAsync(
"This text replaces the body of the message.",
{
coercionType: Office.CoercionType.Html,
bodyMode: Office.MailboxEnums.BodyMode.HostConfig
},
(bodyResult) => {
if (bodyResult.status === Office.AsyncResultStatus.Failed) {
console.log(`Failed to set body: ${bodyResult.error.message}`);
return;
}
console.log("Successfully replaced the body of the message.");
}
);