メッセージまたは予定の本文は、読み取りモードと新規作成モードの両方で取得できます。 メール アイテムの本文を取得するには、 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 on the webまたは新しい Outlook on Windows でメッセージ応答の本文を取得する
Outlook on the webおよび新しい Outlook on Windows では、ユーザーは[設定]、[>メール]、[レイアウト]>、[メッセージ] > [メッセージ] organizationでメッセージを会話または個々のメッセージとして整理できます。 この設定は、特に複数のメッセージを含む会話スレッドで、ユーザーに表示されるメッセージの本文の量に影響します。 設定に応じて、会話スレッド全体または現在のメッセージの内容が表示されます。
[メッセージ組織] 設定の詳細については、「Outlook でのメッセージ一覧の表示方法を変更する」を参照してください。
メッセージ応答で Office.context.mailbox.item.body.getAsync
を呼び出すと、会話スレッドの本文全体が返されます。 返された本文にユーザーのメッセージ組織設定を反映させる場合は、getAsync
呼び出しで bodyMode オプションを指定できます。 次の表に、 bodyMode
構成に応じて返される本文の一部を示します。
bodyMode 構成 |
本文への影響 |
bodyMode は、 getAsync 呼び出しで指定されていません |
会話スレッドの本文全体が返されます。 |
bodyMode が に設定されている Office.MailboxEnums.BodyMode.FullBody |
会話スレッドの本文全体が返されます。 |
bodyMode が に設定されている Office.MailboxEnums.BodyMode.HostConfig |
[メッセージの編成] が [メッセージのグループ化] に設定されている場合>選択した会話からのメッセージをすべて表示するか>メッセージ交換でグループ化されたメールを表示する/最下部に [新しい] を選択すると、現在の返信の本文のみが返されます。
[メッセージ編成] が [個々のメッセージ] に設定されている場合: メッセージをグループ化しないでください>単一のメッセージまたは個別のメッセージとしてメールを表示する場合は、会話スレッドの本文全体が返されます。 |
注:
bodyMode
オプションは、Outlook on 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 形式で編集するデバイス オペレーティング システムとアプリケーションのサポートによって異なります。 項目の形式を確認したら、次の表に示すように、prependAsync
またはsetSelectedDataAsync
のcoercionType
パラメーターを設定してデータを挿入します。 引数を指定しない場合、 prependAsync
と setSelectedDataAsync
は、挿入するデータがテキスト形式であると想定します。
挿入するデータ |
getTypeAsync によって返されるアイテム形式 |
使用する coercionType |
テキスト |
テキスト1 |
テキスト |
HTML |
テキスト1 |
テキスト2 |
テキスト |
HTML |
テキスト/HTML |
HTML |
HTML |
HTML |
注:
1 タブレットやスマートフォンでは、オペレーティング システムまたはアプリケーションが HTML 形式で最初に作成されたアイテムの編集をサポートしていない場合、 getTypeAsync
は "テキスト" を返します。
2 挿入するデータが HTML で、現在のメール アイテムのテキスト型を返 getTypeAsync
場合は、データをテキストとして再構成し、 coercionType
を Office.CoercionType.Text
に設定する必要があります。 テキスト形式の項目に HTML データを挿入するだけで、HTML タグがテキストとして表示されます。 HTML データを挿入し、 coercionType
を Office.CoercionType.Html
に設定しようとすると、エラーが発生します。
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.
*/
});
}
});
}
Outlook on the webまたは新しい Outlook on Windows でメッセージ応答の本文を設定する
Outlook on the webおよび新しい Outlook on Windows では、ユーザーは[設定]、[>メール]、[レイアウト]>、[メッセージ] > [メッセージ] organizationでメッセージを会話または個々のメッセージとして整理できます。 この設定は、特に複数のメッセージを含む会話スレッドで、ユーザーに表示されるメッセージの本文の量に影響します。 設定に応じて、会話スレッド全体または現在のメッセージの内容が表示されます。
[メッセージ組織] 設定の詳細については、「Outlook でのメッセージ一覧の表示方法を変更する」を参照してください。
メッセージ応答で Office.context.mailbox.item.body.setAsync
を呼び出すと、会話スレッドの本文全体が指定したテキストに置き換えられます。 ユーザーのメッセージ組織の設定を尊重し、現在の応答の本文のみを置き換える場合は、setAsync
呼び出しで bodyMode オプションを指定できます。 次の表に、 bodyMode
構成と、設定されているメッセージ本文にそれぞれがどのように影響するかを示します。
bodyMode 構成 |
本文への影響 |
bodyMode は、 setAsync 呼び出しで指定されていません |
会話スレッドの本文全体が置き換えられます。 これは、ユーザーのメッセージが会話別に整理されている場合でも適用されます。 このシナリオでは、ユーザーの設定が [個々のメッセージ] に一時的に変更されます。メッセージをグループ化しないでください>単一メッセージを使用するか、setAsync 呼び出し中に個々のメッセージとして電子メールを表示します。 この変更をユーザーに警告する通知がユーザーに表示されます。 呼び出しが完了すると、ユーザーの設定が再開されます。 |
bodyMode が に設定されている Office.MailboxEnums.BodyMode.FullBody |
会話スレッドの本文全体が置き換えられます。 これは、ユーザーのメッセージが会話別に整理されている場合でも適用されます。 このシナリオでは、ユーザーの設定が [個々のメッセージ] に一時的に変更されます。メッセージをグループ化しないでください>単一メッセージを使用するか、setAsync 呼び出し中に個々のメッセージとして電子メールを表示します。 この変更をユーザーに警告する通知がユーザーに表示されます。 呼び出しが完了すると、ユーザーの設定が再開されます。 |
bodyMode が に設定されている Office.MailboxEnums.BodyMode.HostConfig |
[メッセージ編成] が [メッセージを会話でグループ化する] に設定されている場合>選択した会話からのメッセージをすべて表示するか>メッセージ交換でグループ化された電子メールを表示します上部に [新しい] /下部の [新しい] は、現在の返信の本文のみが置き換えられます。
[メッセージ編成] が [個々のメッセージ] に設定されている場合: メッセージをグループ化しない>単一のメッセージまたは個別のメッセージとしてメールを表示する場合は、会話スレッドの本文全体が置き換えられます。 |
注:
bodyMode
オプションは、Outlook on 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.");
}
);