Outlook で予定またはメッセージを作成するときに本文にデータを挿入する
非同期メソッド (Body.getAsync、 Body.getTypeAsync、 Body.prependAsync、 Body.setAsync 、 Body.setSelectedDataAsync) を使用して、本文の種類を取得し、構成されている予定またはメッセージの本文にデータを挿入します。 これらの非同期メソッドは、アドインを作成する場合にのみ使用できます。これらのメソッドを使用するには、「新規作成フォームの Outlook アドインを作成する」の説明に従って、Outlook が新規作成フォームでアドインをアクティブ化するようにアドイン マニフェストを適切に設定していることを確認 します。
Outlook では、メッセージはテキスト形式、HTML 形式、またはリッチ テキスト形式 (RTF) で作成でき、予定は HTML 形式で作成できます。 データを挿入する前に、 を呼び出 getTypeAsync
してサポートされている項目の形式を確認する必要があります。これは、追加の手順を実行する必要がある場合があるためです。 返される getTypeAsync
値は、元の項目の形式と、HTML 形式で編集するデバイス オペレーティング システムとアプリケーションのサポートによって異なります。 項目の形式を確認したら、次のprependAsync
表に示すように、 または setSelectedDataAsync
のパラメーターを設定coercionType
してデータを挿入します。 引数を指定せず、 prependAsync
setSelectedDataAsync
挿入するデータがテキスト形式であると仮定する場合。
挿入するデータ | getTypeAsync によって返されるアイテム形式 | 使用する coercionType |
---|---|---|
テキスト | テキスト1 | テキスト |
HTML | テキスト1 | テキスト2 |
テキスト | HTML | テキスト/HTML |
HTML | HTML | HTML |
注:
1 タブレットやスマートフォンでは、 getTypeAsync
オペレーティング システムまたはアプリケーションが HTML 形式で最初に作成されたアイテムの編集をサポートしていない場合は、"テキスト" を返します。
2 挿入するデータが HTML で、 getTypeAsync
現在のメール アイテムのテキスト型を返す場合は、データをテキストとして再構成し、 に設定 coercionType
する Office.CoercionType.Text
必要があります。 テキスト形式の項目に HTML データを挿入するだけで、HTML タグがテキストとして表示されます。 HTML データを挿入して にOffice.CoercionType.Html
設定coercionType
しようとすると、エラーが発生します。
パラメーターに coercionType
加えて、Office JavaScript API のほとんどの非同期メソッドと同様に、 getTypeAsync
、 prependAsync
およびその setSelectedDataAsync
他の省略可能な入力パラメーターを受け取ります。 これらの省略可能な入力パラメーターを指定する方法の詳細については、「 Office アドインでの非同期プログラミング」の「省略可能なパラメーターを非同期メソッドに渡す」を参照してください。
現在のカーソル位置にデータを挿入する
このセクションでは、構成されているアイテムの本文の種類を確認するために を使用 getTypeAsync
し、現在のカーソル位置にデータを挿入するために 使用 setSelectedDataAsync
するコード サンプルを示します。
に入力パラメーターとしてデータ文字列を渡す setSelectedDataAsync
必要があります。 アイテム本文のタイプに応じて、このデータ文字列はテキスト形式または HTML 形式で指定できます。 前述のように、必要に応じてパラメーターに挿入するデータの種類を coercionType
指定できます。 の状態と結果を取得するには、コールバック関数とオプションの setSelectedDataAsync
入力パラメーターを メソッドに渡し、コールバックの asyncResult 出力パラメーターから必要な情報を抽出します。 メソッドが成功した場合は、 プロパティからアイテム本文の型 ( asyncResult.value
"text" または "html") を取得できます。
ユーザーがアイテム本文にカーソルを置かない場合は、 setSelectedDataAsync
本文の先頭にデータを挿入します。 ユーザーがアイテム本文でテキストを選択している場合は、 setSelectedDataAsync
選択したテキストを指定したデータに置き換えます。 アイテムの setSelectedDataAsync
作成中にユーザーが同時にカーソル位置を変更すると、失敗する可能性があることに注意してください。 1 回で挿入できる文字の最大数は、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.
*/
});
}
});
}
関連項目
Office Add-ins