Inserir dados no corpo ao compor um compromisso ou uma mensagem no Outlook
Use os métodos assíncronos (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync e Body.setSelectedDataAsync) para obter o tipo de corpo e inserir dados no corpo de uma nomeação ou mensagem que está sendo composta. Esses métodos assíncronos só estão disponíveis para compor suplementos. Para usar esses métodos, verifique se você configurou o manifesto de suplemento adequadamente para que o Outlook ative seu suplemento em formulários de composição, conforme descrito em Criar suplementos do Outlook para formulários de composição.
No Outlook, um usuário pode criar uma mensagem em texto, HTML ou RTF (Rich Text Format) e pode criar um compromisso no formato HTML. Antes de inserir dados, primeiro você deve verificar o formato de item com suporte chamando getTypeAsync
, pois talvez seja necessário tomar medidas adicionais. O valor que getTypeAsync
retorna depende do formato de item original, bem como do suporte do sistema operacional do dispositivo e do aplicativo para edição no formato HTML. Depois de verificar o formato do item, defina o coercionType
parâmetro de prependAsync
ou setSelectedDataAsync
de acordo para inserir os dados, conforme mostrado na tabela a seguir. Se você não especificar um argumento e prependAsync
setSelectedDataAsync
assumir que os dados a serem inseridos estão no formato de texto.
Dados a inserir | Formato de item retornado por getTypeAsync | coercionType a ser usado |
---|---|---|
Texto | Texto1 | Texto |
HTML | Texto1 | Texto2 |
Texto | HTML | Texto/HTML |
HTML | HTML | HTML |
Observação
1 Em tablets e smartphones, getTypeAsync
retorna "Text" se o sistema operacional ou aplicativo não dá suporte à edição de um item, que foi originalmente criado em HTML, no formato HTML.
2 Se seus dados a serem inseridos forem HTML e getTypeAsync
retornarem um tipo de texto para o item de email atual, você deverá reorganizar seus dados como texto e definir coercionType
Office.CoercionType.Text
como . Se você simplesmente inserir os dados HTML em um item formatado por texto, o aplicativo exibirá as marcas HTML como texto. Se você tentar inserir os dados HTML e definir coercionType
como Office.CoercionType.Html
, você receberá um erro.
Além do parâmetro, como acontece com a maioria dos coercionType
métodos assíncronos na API JavaScript do Office, getTypeAsync
, e setSelectedDataAsync
prependAsync
use outros parâmetros de entrada opcionais. Para obter mais informações sobre como especificar esses parâmetros de entrada opcionais, confira "Passando parâmetros opcionais para métodos assíncronos" na programação assíncrona nos Suplementos do Office.
Inserir dados na posição atual do cursor
Esta seção mostra um exemplo de código que usa getTypeAsync
para verificar o tipo de corpo do item que está sendo composto e, em seguida, usa setSelectedDataAsync
para inserir dados no local atual do cursor.
Você deve passar uma cadeia de dados como um parâmetro de entrada para setSelectedDataAsync
. Dependendo do tipo do corpo do item, você pode especificar essa cadeia de caracteres de dados no formato HTML ou de texto adequadamente. Conforme mencionado anteriormente, você pode especificar opcionalmente o tipo dos dados a serem inseridos no coercionType
parâmetro. Para obter o status e os resultados de setSelectedDataAsync
, passe uma função de retorno de chamada e parâmetros de entrada opcionais para o método e extraia as informações necessárias do parâmetro de saída asyncResult do retorno de chamada. Se o método for bem-sucedido, você poderá obter o tipo do corpo do item da asyncResult.value
propriedade, que é "text" ou "html".
Se o usuário não tiver colocado o cursor no corpo do item, setSelectedDataAsync
insira os dados na parte superior do corpo. Se o usuário tiver selecionado o texto no corpo do item, setSelectedDataAsync
substituirá o texto selecionado pelos dados especificados. Observe que setSelectedDataAsync
pode falhar se o usuário alterar simultaneamente a posição do cursor ao compor o item. O número máximo de caracteres que você pode inserir de cada vez é um milhão.
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.
*/
});
}
});
}
Inserir dados no início do corpo do item
Como alternativa, você pode usar prependAsync
para inserir dados no início do corpo do item e ignorar o local atual do cursor. Além do ponto de inserção, prependAsync
e setSelectedDataAsync
se comporte de maneiras semelhantes. Primeiro, você deve marcar o tipo do corpo da mensagem para evitar a preparação de dados HTML para uma mensagem no formato de texto. Em seguida, passe a cadeia de dados para ser pré-endereçada no formato de texto ou HTML para prependAsync
. O número máximo de caracteres que você pode anexar no início de cada vez é um milhão.
O código JavaScript a seguir primeiro chama getTypeAsync
para verificar o tipo do corpo do item. Em seguida, dependendo do tipo, ele insere os dados como HTML ou texto na parte superior do corpo.
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.
*/
});
}
});
}
Confira também
- Obter e definir dados de item em um formulário de redação no Outlook
- Obter e definir dados de item do Outlook em formulários de leitura ou composição
- Criar suplementos do Outlook para formulários de composição
- Programação assíncrona em Suplementos do Office
- Obter, configurar ou adicionar destinatários ao criar um compromisso ou uma mensagem no Outlook
- Obter ou definir o assunto ao criar um compromisso ou uma mensagem no Outlook
- Obter ou definir o local ao criar um compromisso no Outlook
- Obter ou definir a hora ao criar um compromisso no Outlook