Mail MergeテンプレートからMustache構文

Aspose.Wordsを使用すると、使い慣れたテンプレートに加えてmustache構文を使用してテンプレートを作成できます。 Mustacheは、タグ名で囲まれたテンプレート構文の代替バリアントであり、テンプレートのデータを含むモデルオブジェクトによってサポートされています。Mustacheは、テンプレート構文の代替バリアントです。

Mustache構文は、HTMLテンプレートやTXTテンプレートなどのフィールドを含まないテンプレートで使用する唯一のオプションです。 Wordテンプレートでは、フィールドまたはMustache構文を使用する二つのオプションがあります。

Mustache構文はforeachタグをサポートしていますが、これは地域でMail Mergeを使用するための代替手段です。 したがって、何らかの理由でmustache構文を使用できない場合、または単に差し込み項目と差し込み領域を使用したくない場合は、mustache構文を使用できるという利点があります。

下の図に示すように、foreachタグを使用してMail Mergeフィールドといくつかの追加フィールドを組み合わせることもできます。

mustache_syntax

Mustacheテンプレートを作成する

明確にすべき最初の重要な点は、Mustacheはテンプレートエンジンではないということです。 Mustacheは、Aspose.Wordsでサポートされているload format内の任意のテンプレートで使用できる別の構文バリアントです。 したがって、プログラムとインターフェイスの両方を介してこのようなテンプレートを作成することができます。特定の構文を含め、Mustache仕様に準拠するだけで済みます。

対応する名で挨拶をパーソナライズするために、同じメールを50人の受信者に送信する必要があるとします。 次のように、受信者の名をプレースホルダーに置き換えることができます:

Dear {{FirstName}}

I hereby…

ここでの質問:1つのMustacheテンプレートから50個のメールを作成するにはどうすればよいですか? これに答えるには、Mail Mergeを領域で実行して、テンプレート内のプレースホルダーの中括弧を実際のデータで埋め、出力ドキュメントを生成する必要があります。

mustache_template

Mustache構文を使用する

Mustacheは、forループやifelse条件などの特定の制御フローステートメントがないため、ロジックレスオーダーとして表されます。 しかし、条件付き評価とループを実現するために、セクションタグ処理リストとラムダを使用することができます。 したがって、Mail Merge操作内にMustache構文を含めるには、UseNonMergeFieldsプロパティを使用し、その値をTrueに設定する必要があります。

次のコード例は、Mustacheタグを特定のデータに置き換える方法を示しています:

UseNonMergeFieldsプロパティを適用するとともに、領域でMail Mergeを実行する前に、ドキュメントの違いに気付くことができます:

mustache_syntax

そして、領域でMail Mergeを適用した後:

mustache_syntax_result

IFフィールドを使用してMail Mergeをインテリジェントにする

Aspose.Wordsを使用すると、Mail MergeフィールドとMustacheタグをIFステートメントで使用できます。 IFフィールドは、任意のMail Mergeドキュメントで使用して、フィールドが空白の場合に不要なスペースとコンマを抑制できます。

IFフィールドの式を以下に示します:

{ IF [Condition] [Display Result 1] [Display Result 2] }

ここでは、条件は差し込み項目またはMustacheタグのいずれかになります。

たとえば、次のように性別に応じて"his"、“her”、“he”、または"she"を挿入する必要がある場合は、IFフィールドを使用できます:

{ IF { MERGEFIELD Gender } = “MALE” “真のテキスト” “偽のテキスト”}

{ IF “{{ GENDER }}” = “MALE” “真のテキスト” “偽のテキスト”}

次のコード例は、MustacheタグとIFフィールドを使用してMail Merge操作を実行する方法を示しています:

UseNonMergeFieldsプロパティを適用する前に、ドキュメントの違いに気付くことができます:

mustache_if_field

UseNonMergeFieldsプロパティを適用した後:

mustache-if-field-2.png