Puede obtener el cuerpo de un mensaje o una cita en los modos de lectura y redacción. Para recuperar el cuerpo de un elemento de correo, llame a Office.context.mailbox.item.body.getAsync. Al llamar al getAsync
método , debe especificar el formato del cuerpo devuelto en el coercionType
parámetro . Por ejemplo, puede obtener el cuerpo en formato HTML o texto sin formato.
En el ejemplo siguiente se obtiene el cuerpo de un elemento en formato 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.
});
Obtener el cuerpo de las respuestas de mensajes en Outlook en la Web o en el nuevo Outlook en Windows
En Outlook en la Web y el nuevo Outlook en Windows, los usuarios pueden organizar sus mensajes como conversaciones o mensajes individuales en la organización De>configuración de mensajes de diseño>decorreo>. Esta configuración afecta a la cantidad de cuerpo de un mensaje que se muestra al usuario, especialmente en los subprocesos de conversación con varios mensajes. Dependiendo de la configuración, se muestra el contenido de todo el subproceso de conversación o solo el mensaje actual. Para obtener más información sobre la configuración de la organización del mensaje , vea Cambiar cómo se muestra la lista de mensajes en Outlook.
Cuando se llama a Office.context.mailbox.item.body.getAsync
en una respuesta de mensaje, se devuelve todo el cuerpo de un subproceso de conversación. Si desea que el cuerpo devuelto refleje la configuración de organización de mensajes del usuario, puede especificar la opción bodyMode en la getAsync
llamada. En la tabla siguiente se muestra la parte del cuerpo devuelta en función de la bodyMode
configuración.
configuración bodyMode |
Efecto en el cuerpo |
bodyMode no se especifica en la getAsync llamada |
Se devuelve todo el cuerpo del subproceso de conversación. |
bodyMode se establece en Office.MailboxEnums.BodyMode.FullBody |
Se devuelve todo el cuerpo del subproceso de conversación. |
bodyMode se establece en Office.MailboxEnums.BodyMode.HostConfig |
Si la organización del mensaje está establecida en Agrupar mensajes por conversación>Todos los mensajes de la conversación seleccionada o Mostrar correo electrónico agrupado por conversación>Más reciente en la parte superior/más reciente de la parte inferior, solo se devuelve el cuerpo de la respuesta actual.
Si la organización del mensaje está establecida en Mensajes individuales: no agrupar mensajes>Solo un solo mensaje o Mostrar correo electrónico como mensajes individuales, se devuelve todo el cuerpo del subproceso de conversación. |
Nota:
La bodyMode
opción se omite en Outlook en Windows (clásico), en Mac y en dispositivos móviles.
En el ejemplo siguiente se especifica la bodyMode
opción para respetar la configuración del mensaje del usuario.
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.
}
);
Usa los métodos asincrónicos (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync y Body.setSelectedDataAsync) para obtener el tipo de cuerpo e insertar datos en el cuerpo de una cita o mensaje que se va a componer. Estos métodos asincrónicos solo están disponibles para crear complementos. Para usar estos métodos, asegúrese de que ha configurado el manifiesto del complemento correctamente para que Outlook active el complemento en formularios de redacción, como se describe en Crear complementos de Outlook para formularios de redacción.
En Outlook, un usuario puede crear un mensaje de texto, HTML o formato de texto enriquecido (RTF) y puede crear una cita en formato HTML. Antes de insertar datos, primero debe comprobar el formato de elemento compatible llamando a getTypeAsync
, ya que es posible que tenga que realizar pasos adicionales. El valor que getTypeAsync
devuelve depende del formato de elemento original, así como de la compatibilidad del sistema operativo del dispositivo y la aplicación para editar en formato HTML. Una vez que haya comprobado el formato del elemento, establezca el coercionType
parámetro de prependAsync
o setSelectedDataAsync
en consecuencia para insertar los datos, como se muestra en la tabla siguiente. Si no especifica un argumento prependAsync
y setSelectedDataAsync
supone que los datos que se van a insertar están en formato de texto.
Datos por insertar |
Formato de elemento devuelto por getTypeAsync |
coercionType que se va a usar |
Texto |
Texto1 |
Texto |
HTML |
Texto1 |
Texto2 |
Texto |
HTML |
Texto/HTML |
HTML |
HTML |
HTML |
Nota:
1 En tabletas y smartphones, getTypeAsync
devuelve "Texto" si el sistema operativo o la aplicación no admiten la edición de un elemento, que originalmente se creó en HTML, en formato HTML.
2 Si los datos que se van a insertar son HTML y getTypeAsync
devuelve un tipo de texto para el elemento de correo actual, debe reorganizar los datos como texto y establecer en coercionType
Office.CoercionType.Text
. Si simplemente inserta los datos HTML en un elemento con formato de texto, la aplicación muestra las etiquetas HTML como texto. Si intenta insertar los datos HTML y establece en coercionType
Office.CoercionType.Html
, obtendrá un error.
Además del parámetro , como con la coercionType
mayoría de los métodos asincrónicos de la API de JavaScript de Office, getTypeAsync
, prependAsync
y setSelectedDataAsync
toman otros parámetros de entrada opcionales. Para obtener más información sobre cómo especificar estos parámetros de entrada opcionales, vea "Pasar parámetros opcionales a métodos asincrónicos" en Programación asincrónica en complementos de Office.
Insertar datos en la posición actual del cursor
En esta sección se muestra un ejemplo de código que usa getTypeAsync
para comprobar el tipo de cuerpo del elemento que se va a componer y, a continuación, se usa setSelectedDataAsync
para insertar datos en la ubicación actual del cursor.
Debe pasar una cadena de datos como parámetro de entrada a setSelectedDataAsync
. De acuerdo con el tipo de cuerpo del elemento, puede especificar esta cadena de datos en formato de texto o HTML, según corresponda. Como se mencionó anteriormente, opcionalmente puede especificar el tipo de datos que se van a insertar en el coercionType
parámetro . Para obtener el estado y los resultados de , pase una función de setSelectedDataAsync
devolución de llamada y parámetros de entrada opcionales al método y, a continuación, extraiga la información necesaria del parámetro de salida asyncResult de la devolución de llamada. Si el método se realiza correctamente, puede obtener el tipo del cuerpo del elemento de la asyncResult.value
propiedad , que es "text" o "html".
Si el usuario no ha colocado el cursor en el cuerpo del elemento, setSelectedDataAsync
inserta los datos en la parte superior del cuerpo. Si el usuario ha seleccionado texto en el cuerpo del elemento, setSelectedDataAsync
reemplaza el texto seleccionado por los datos especificados. Tenga en cuenta que setSelectedDataAsync
puede producir un error si el usuario cambia simultáneamente la posición del cursor mientras redacta el elemento. El número máximo de caracteres que puede insertar de una vez es de 1.000.000.
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.
*/
});
}
});
}
Insertar datos al comienzo del cuerpo del elemento
Como alternativa, puede usar prependAsync
para insertar datos al principio del cuerpo del elemento y no tener en cuenta la ubicación actual del cursor. Aparte del punto de inserción y prependAsync
setSelectedDataAsync
comportarse de maneras similares. Primero debe comprobar el tipo de cuerpo del mensaje para evitar preaplicar los datos HTML a un mensaje en formato de texto. A continuación, pase la cadena de datos que se va a anteponer en formato de texto o HTML a prependAsync
. El número máximo de caracteres que se pueden anteponer de una vez es de 1.000.000.
El siguiente código JavaScript llama getTypeAsync
primero a para comprobar el tipo del cuerpo del elemento. A continuación, en función del tipo, inserta los datos como HTML o texto en la parte superior del cuerpo.
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.
*/
});
}
});
}
Establecer el cuerpo de las respuestas de mensajes en Outlook en la Web o en el nuevo Outlook en Windows
En Outlook en la Web y el nuevo Outlook en Windows, los usuarios pueden organizar sus mensajes como conversaciones o mensajes individuales en la organización De>configuración de mensajes de diseño>decorreo>. Esta configuración afecta a la cantidad de cuerpo de un mensaje que se muestra al usuario, especialmente en los subprocesos de conversación con varios mensajes. Dependiendo de la configuración, se muestra el contenido de todo el subproceso de conversación o solo el mensaje actual. Para obtener más información sobre la configuración de la organización del mensaje , vea Cambiar cómo se muestra la lista de mensajes en Outlook.
Al llamar a Office.context.mailbox.item.body.setAsync
en una respuesta de mensaje, todo el cuerpo de un subproceso de conversación se reemplaza por el texto especificado. Si desea respetar la configuración de organización de mensajes del usuario y reemplazar solo el cuerpo de la respuesta actual, puede especificar la opción bodyMode en la setAsync
llamada. En la tabla siguiente se enumeran las bodyMode
configuraciones y cómo afecta cada una al cuerpo del mensaje que se va a establecer.
configuración bodyMode |
Efecto en el cuerpo |
bodyMode no se especifica en la setAsync llamada |
Se reemplaza todo el cuerpo del subproceso de conversación. Esto se aplica incluso si los mensajes de un usuario están organizados por conversación. En este escenario, la configuración del usuario se cambia temporalmente a Mensajes individuales: No agrupar mensajes>Solo un solo mensaje o Mostrar correo electrónico como mensajes individuales durante la setAsync llamada. Se muestra una notificación al usuario para que le avise de este cambio. Una vez completada la llamada, se restablece la configuración del usuario. |
bodyMode se establece en Office.MailboxEnums.BodyMode.FullBody |
Se reemplaza todo el cuerpo del subproceso de conversación. Esto se aplica incluso si los mensajes de un usuario están organizados por conversación. En este escenario, la configuración del usuario se cambia temporalmente a Mensajes individuales: No agrupar mensajes>Solo un solo mensaje o Mostrar correo electrónico como mensajes individuales durante la setAsync llamada. Se muestra una notificación al usuario para que le avise de este cambio. Una vez completada la llamada, se restablece la configuración del usuario. |
bodyMode se establece en Office.MailboxEnums.BodyMode.HostConfig |
Si la organización del mensaje está establecida en Agrupar mensajes por conversación>Todos los mensajes de la conversación seleccionada o Mostrar correo electrónico agrupado por conversación>Más reciente en la parte superior/más reciente de la parte inferior, solo se reemplaza el cuerpo de la respuesta actual.
Si la organización del mensaje está establecida en Mensajes individuales: no agrupar mensajes>Solo un solo mensaje o Mostrar correo electrónico como mensajes individuales, se reemplaza todo el cuerpo del subproceso de conversación. |
Nota:
La bodyMode
opción se omite en Outlook en Windows (clásico), en Mac y en dispositivos móviles.
En el ejemplo siguiente se especifica la bodyMode
opción para respetar la configuración del mensaje del usuario.
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.");
}
);