Insertar datos en el cuerpo al redactar una cita o mensaje en Outlook
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.
*/
});
}
});
}
Vea también
- Obtener y establecer datos de elementos en un formulario de redacción de Outlook
- Obtener y establecer datos de elementos de Outlook en formularios de lectura o redacción
- Crear complementos de Outlook para formularios de redacción
- Programación asincrónica en los complementos de Office
- Obtener, establecer o agregar destinatarios al redactar una cita o mensaje en Outlook
- Obtener o establecer el asunto al redactar una cita o mensaje en Outlook
- Obtener o establecer la ubicación al redactar una cita en Outlook
- Obtener o establecer la hora al redactar una cita en Outlook