Share via


Outlook で予定またはメッセージを作成するときに本文にデータを挿入する

非同期メソッド (Body.getAsyncBody.getTypeAsyncBody.prependAsyncBody.setAsyncBody.setSelectedDataAsync) を使用して、本文の種類を取得し、構成されている予定またはメッセージの本文にデータを挿入します。 これらの非同期メソッドは、アドインを作成する場合にのみ使用できます。これらのメソッドを使用するには、「新規作成フォームの Outlook アドインを作成する」の説明に従って、Outlook が新規作成フォームでアドインをアクティブ化するようにアドイン マニフェストを適切に設定していることを確認 します

Outlook では、メッセージはテキスト形式、HTML 形式、またはリッチ テキスト形式 (RTF) で作成でき、予定は HTML 形式で作成できます。 データを挿入する前に、 を呼び出 getTypeAsyncしてサポートされている項目の形式を確認する必要があります。これは、追加の手順を実行する必要がある場合があるためです。 返される getTypeAsync 値は、元の項目の形式と、HTML 形式で編集するデバイス オペレーティング システムとアプリケーションのサポートによって異なります。 項目の形式を確認したら、次のprependAsync表に示すように、 または setSelectedDataAsync のパラメーターを設定coercionTypeしてデータを挿入します。 引数を指定せず、 prependAsyncsetSelectedDataAsync 挿入するデータがテキスト形式であると仮定する場合。

挿入するデータ 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 のほとんどの非同期メソッドと同様に、 getTypeAsyncprependAsyncおよびその 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.
                    */
            });
        }
    });
}

関連項目