Вставка данных в текст при создании встречи или сообщения в Outlook
Используйте асинхронные методы (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 в формах просмотра и создания
- Создание надстроек Outlook для форм создания
- Асинхронное программирование надстроек Office
- Просмотр, изменение или добавление получателей при создании встречи или сообщения в Outlook
- Просмотр или изменение темы при создании встречи или сообщения в Outlook
- Просмотр или изменение расположения при создании встречи в Outlook
- Просмотр или изменение времени при создании встречи в Outlook
Office Add-ins