Текст сообщения или встречи можно получить в режиме чтения и составления. Чтобы получить текст почтового элемента, вызовите office.context.mailbox.item.body.getAsync. При вызове getAsync
метода необходимо указать формат возвращаемого текста в параметре coercionType
. Например, текст можно получить в формате HTML или обычного текста.
В следующем примере возвращается текст элемента в формате 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.
});
Получение текста ответов на сообщения в Outlook в Интернете или новом Outlook в Windows
В Outlook в Интернете и новом Outlook в Windows пользователи могут упорядочивать свои сообщения в виде беседили отдельных сообщений вразделе Параметрыорганизации почтовых>>> сообщений. Этот параметр влияет на то, сколько текста сообщения отображается для пользователя, особенно в потоках бесед с несколькими сообщениями. В зависимости от параметра отображается содержимое всего потока беседы или только текущего сообщения. Дополнительные сведения о параметре Организация сообщений см. в разделе Изменение способа отображения списка сообщений в Outlook.
При вызове Office.context.mailbox.item.body.getAsync
ответа на сообщение возвращается весь текст потока беседы. Если вы хотите, чтобы возвращаемый текст отражал параметр организации сообщений пользователя, можно указать параметр bodyMode в вызове getAsync
. В следующей таблице приведена часть текста, возвращаемая в зависимости от конфигурации bodyMode
.
Конфигурация bodyMode |
Влияние на тело |
bodyMode не указан в вызове getAsync |
Возвращается весь текст потока беседы. |
bodyMode для задано значение Office.MailboxEnums.BodyMode.FullBody |
Возвращается весь текст потока беседы. |
bodyMode для задано значение Office.MailboxEnums.BodyMode.HostConfig |
Если для параметра Организация сообщений задано значение Группировать сообщения по беседе>Все сообщения из выбранной беседы или Показывать сообщения электронной почты, сгруппированные по беседе>в верхней части/Новейшие внизу, возвращается только текст текущего ответа.
Если для организации сообщений задано значение Отдельные сообщения: не группировать сообщения>только по одному сообщению или Показывать сообщения в виде отдельных сообщений, возвращается весь текст потока беседы. |
Примечание.
Параметр bodyMode
игнорируется в Outlook в Windows (классической), на Mac и на мобильных устройствах.
В следующем примере задается bodyMode
параметр для учета параметра сообщения пользователя.
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.
}
);
Используйте асинхронные методы (Body.getAsync, Body.getTypeAsync, Body.prependAsync, Body.setAsync и Body.setSelectedDataAsync), чтобы получить тип основного текста, а затем вставить данные в текст создаваемой встречи или сообщения. Эти асинхронные методы доступны только для создания надстроек. Чтобы использовать эти методы, убедитесь, что манифест надстройки настроен соответствующим образом, чтобы Outlook активировал надстройку в формах создания, как описано в разделе Создание надстроек Outlook для форм создания.
В Outlook пользователь может создавать сообщения (текстовые, а также в формате HTML и RTF) и встречи (в формате HTML). Прежде чем вставлять данные, необходимо сначала проверить поддерживаемый формат элемента, вызвав getTypeAsync
, так как может потребоваться выполнить дополнительные действия. Возвращаемое getTypeAsync
значение зависит от исходного формата элемента, а также от поддержки операционной системы устройства и приложения для редактирования в формате HTML. После проверки формата элемента задайте coercionType
параметр prependAsync
или setSelectedDataAsync
, соответственно, чтобы вставить данные, как показано в следующей таблице. Если не указать аргумент и setSelectedDataAsync
предположить, prependAsync
что вставляемые данные в текстовом формате.
Данные для вставки |
Формат элемента, возвращенный методом getTypeAsync |
CoercionType для использования |
Текст |
Текст1 |
Текст |
HTML |
Текст1 |
Текст2 |
Текст |
HTML |
Текст или HTML |
HTML |
HTML |
HTML |
Примечание.
1 На планшетах и смартфонах возвращает текст, getTypeAsync
если операционная система или приложение не поддерживает редактирование элемента, который был создан в ФОРМАТЕ HTML, в формате HTML.
2 Если вставляемые данные являются HTML и getTypeAsync
возвращают тип текста для текущего почтового элемента, необходимо реорганизовать данные как текстовые и задать для параметра coercionType
Office.CoercionType.Text
значение . Если просто вставить HTML-данные в текстовый элемент, приложение отобразит html-теги в виде текста. Если вы попытаетесь вставить html-данные и присвоить значение coercionType
Office.CoercionType.Html
, вы получите сообщение об ошибке.
В дополнение к параметру coercionType
, как и большинство асинхронных методов в API JavaScript для Office, getTypeAsync
, prependAsync
и setSelectedDataAsync
принимают другие необязательные входные параметры. Дополнительные сведения о том, как указать эти необязательные входные параметры, см. в разделе Передача необязательных параметров в асинхронные методы статьи Асинхронное программирование в надстройках Office.
Вставка данных в текущей позиции курсора
В этом разделе показан пример кода, который используется getTypeAsync
для проверки типа текста создаваемого элемента, а затем используется setSelectedDataAsync
для вставки данных в текущее расположение курсора.
Необходимо передать строку данных в качестве входного параметра в setSelectedDataAsync
. В зависимости от типа текста элемента можно указать эту строку в виде текста или HTML соответственно. Как упоминалось ранее, при необходимости можно указать тип данных для вставки в coercionType
параметр . Чтобы получить состояние и результаты , передайте функцию обратного setSelectedDataAsync
вызова и необязательные входные параметры в метод, а затем извлеките необходимые сведения из выходного параметра asyncResult обратного вызова. В случае успешного выполнения метода можно получить тип текста элемента из asyncResult.value
свойства , то есть "text" или "html".
Если пользователь не поместил курсор в текст элемента, setSelectedDataAsync
вставляет данные в верхнюю часть текста. Если пользователь выбрал текст в тексте элемента, setSelectedDataAsync
он заменяет выделенный текст указанными данными. Обратите внимание, что setSelectedDataAsync
может завершиться ошибкой, если пользователь одновременно изменяет позицию курсора при создании элемента. Максимальное число символов, которые можно вставить за один раз — 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.
*/
});
}
});
}
Вставка данных в начале текста элемента
Кроме того, можно использовать prependAsync
для вставки данных в начале текста элемента и игнорировать текущее расположение курсора. Кроме точки вставки, prependAsync
и setSelectedDataAsync
ведут себя аналогичным образом. Сначала необходимо проверка тип текста сообщения, чтобы избежать привязки HTML-данных к сообщению в текстовом формате. Затем передайте строку данных, которая будет добавлена в текстовом или HTML-формате, в prependAsync
. Максимальное число символов, которые можно вставить в начало за один раз — 1 000 000.
Следующий код JavaScript сначала вызывает getTypeAsync
для проверки типа текста элемента. Затем в зависимости от типа данные вставляются в виде HTML-кода или текста в верхнюю часть текста.
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.
*/
});
}
});
}
Настройка текста ответов на сообщения в Outlook в Интернете или новом Outlook в Windows
В Outlook в Интернете и новом Outlook в Windows пользователи могут упорядочивать свои сообщения в виде беседили отдельных сообщений вразделе Параметрыорганизации почтовых>>> сообщений. Этот параметр влияет на то, сколько текста сообщения отображается для пользователя, особенно в потоках бесед с несколькими сообщениями. В зависимости от параметра отображается содержимое всего потока беседы или только текущего сообщения. Дополнительные сведения о параметре Организация сообщений см. в разделе Изменение способа отображения списка сообщений в Outlook.
При вызове Office.context.mailbox.item.body.setAsync
ответа на сообщение весь текст потока беседы заменяется указанным текстом. Если вы хотите выполнить настройку организации сообщений пользователя и заменить только текст текущего ответа, можно указать параметр bodyMode в вызове setAsync
. В следующей таблице перечислены конфигурации bodyMode
и то, как каждая из них влияет на текст сообщения.
Конфигурация bodyMode |
Влияние на тело |
bodyMode не указан в вызове setAsync |
Весь текст потока беседы заменяется. Это применимо, даже если сообщения пользователя организованы по беседе. В этом сценарии параметр пользователя временно меняется на Отдельные сообщения: не группировать сообщения>только по одному сообщению или Показывать сообщения электронной почты как отдельные сообщения во время setAsync звонка. Пользователю отображается уведомление об этом изменении. После завершения вызова параметр пользователя будет восстановлен. |
bodyMode для задано значение Office.MailboxEnums.BodyMode.FullBody |
Весь текст потока беседы заменяется. Это применимо, даже если сообщения пользователя организованы по беседе. В этом сценарии параметр пользователя временно меняется на Отдельные сообщения: не группировать сообщения>только по одному сообщению или Показывать сообщения электронной почты как отдельные сообщения во время setAsync звонка. Пользователю отображается уведомление об этом изменении. После завершения вызова параметр пользователя будет восстановлен. |
bodyMode для задано значение Office.MailboxEnums.BodyMode.HostConfig |
Если для параметра Организация сообщений задано значение Группировать сообщения по беседе>Все сообщения из выбранной беседы или Показывать сообщения электронной почты, сгруппированные по беседе>в верхней части/Новейшие внизу, заменяется только текст текущего ответа.
Если для организации сообщений задано значение Отдельные сообщения. Не группировать сообщения>только по одному сообщению или Показывать сообщения в виде отдельных сообщений, весь текст общения будет заменен. |
Примечание.
Параметр bodyMode
игнорируется в Outlook в Windows (классической), на Mac и на мобильных устройствах.
В следующем примере задается bodyMode
параметр для учета параметра сообщения пользователя.
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.");
}
);