PythonでメールマージテンプレートからMSWordドキュメントを生成する

MS Wordのメールマージは、手紙、請求書、封筒、レポートなどを作成できる人気のある機能です。メールマージを使用すると、テンプレートを作成してデータを入力できます。その結果、データソースのエントリごとにドキュメントが生成されます。この機能を自動化するために、この記事では、Pythonを使用してMSWordのメールマージを実行する方法について説明します。メールマージテンプレートを最初から作成し、プログラムで入力する方法を学習します。

MSWordメールのマージを自動化するPythonライブラリ

MS Wordメールのマージを自動化するには、Aspose.Words for Pythonを使用します。これは、Word文書を作成および操作できる強力なライブラリです。さらに、メールマージテンプレートを作成し、それらをシームレスに入力することができます。 Aspose.Words for Pythonは、次のpipコマンドを使用してPyPIからインストールできます。

pip install aspose-words 

Pythonでメールマージテンプレートを作成する

メールマージテンプレートには、データソースの値が入力されたマージフィールドが含まれています。テンプレートは、DOTDOTXDOC、またはDOCX形式にすることができます。メールマージテンプレートを作成するには、MSWordを使用できます。ただし、Pythonでこの手順を自動化するには、次の手順に従います。

  • DocumentBuilderクラスのオブジェクトを作成します。
  • DocumentBuilder.insert_text_input()メソッドを使用してテキストを挿入します。
  • DocumentBuilder.insert_field()メソッドを使用してマージフィールドを挿入します。
  • 必要に応じて、テキストの挿入とフィールドのマージを繰り返します。
  • DocumentBuilder.document.save()メソッドを使用して、テンプレートをファイルとして保存します。

次のコードサンプルは、Pythonを使用してDOCXメールマージテンプレートを作成する方法を示しています。

import aspose.words as aw

# Create a document builder
builder = aw.DocumentBuilder()

# Insert a text input field the unique name of this field is "Hello", the other parameters define
# what type of FormField it is, the format of the text, the field result and the maximum text length (0 = no limit)
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Hello ", 0)
builder.insert_field("MERGEFIELD CustomerFirstName \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, "", " ", 0)
builder.insert_field("MERGEFIELD CustomerLastName \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, "", " , ", 0)

# Insert a paragraph break into the document
builder.insert_paragraph()

# Insert mail body
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Thanks for purchasing our ", 0)
builder.insert_field("MERGEFIELD ProductName \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ", please download your Invoice at ", 0)
builder.insert_field("MERGEFIELD InvoiceURL \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ". If you have any questions please call ", 0)
builder.insert_field("MERGEFIELD Supportphone \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ", or email us at ", 0)
builder.insert_field("MERGEFIELD SupportEmail \\* MERGEFORMAT")

builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", ".", 0)

builder.insert_paragraph()

# Insert mail ending
builder.insert_text_input("TextInput", aw.fields.TextFormFieldType.REGULAR, "", "Best regards,", 0)
builder.insert_break(aw.BreakType.LINE_BREAK)
builder.insert_field("MERGEFIELD EmployeeFullname \\* MERGEFORMAT")

builder.insert_text_input("TextInput1", aw.fields.TextFormFieldType.REGULAR, ",", " ", 0)
builder.insert_field("MERGEFIELD EmployeeDepartment \\* MERGEFORMAT")

# Save the template as a DOCX file
builder.document.save("mail_merge_template.docx")

以下は、上記のコードサンプルを使用して作成したテンプレートのスクリーンショットです。

Pythonでメールマージテンプレートを作成する

Pythonでメールマージテンプレートを使用してWord文書を生成する

メールマージテンプレートを作成したら、そのフィールドに値を入力します。以下は、PythonでメールマージテンプレートからWord文書を生成する手順です。

  • Documentクラスを使用してメールマージテンプレートをロードします。
  • Document.mail_merge.execute()メソッドを呼び出し、配列の形式でデータを渡します。
  • Document.save()メソッドを使用して、生成されたドキュメントを保存します。

次のコードサンプルは、メールマージテンプレートからWord文書を生成する方法を示しています。

import aspose.words as aw

# Load the mail merge template
doc = aw.Document("mail_merge_template.docx")

# Fill the fields in the document with data
doc.mail_merge.execute(["CustomerFirstName", "CustomerLastName", "ProductName", "InvoiceURL", "SupportPhone", "SupportEmail", "EmployeeFullname", "EmployeeDepartment"],
    ["John", "Doe", "Aspose.Words", "aspose.com", "111-222-333", "support@aspose.com", "Jimmy", "Sales"]
    )

# Save the document
doc.save("mail_merge_populated.docx")

次のスクリーンショットは、メールマージテンプレートから生成したWord文書を示しています。

PythonのメールマージテンプレートからWord文書を生成する

無料ライセンスを取得する

無料の一時ライセンスを取得することで、評価の制限なしにAspose.Words for Pythonを使用できます。

結論

MS Wordメールマージは、事前定義されたテンプレートからWord文書を生成するための便利な機能です。メールマージを自動化するために、この記事では、メールマージテンプレートを作成し、Pythonでデータを入力する方法について説明しました。 ドキュメントを使用して、Aspose.Words for Pythonの他の機能を調べることもできます。ご不明な点がございましたら、フォーラムまでお気軽に投稿してください。

関連項目