MS Wordのメールマージは、手紙、請求書、封筒、レポートなどを作成できる人気のある機能です。メールマージを使用すると、テンプレートを作成してデータを入力できます。その結果、データソースのエントリごとにドキュメントが生成されます。この機能を自動化するために、この記事では、Pythonを使用してMSWordのメールマージを実行する方法について説明します。メールマージテンプレートを最初から作成し、プログラムで入力する方法を学習します。
MSWordメールのマージを自動化するPythonライブラリ
MS Wordメールのマージを自動化するには、Aspose.Words for Pythonを使用します。これは、Word文書を作成および操作できる強力なライブラリです。さらに、メールマージテンプレートを作成し、それらをシームレスに入力することができます。 Aspose.Words for Pythonは、次のpipコマンドを使用してPyPIからインストールできます。
pip install aspose-words
Pythonでメールマージテンプレートを作成する
メールマージテンプレートには、データソースの値が入力されたマージフィールドが含まれています。テンプレートは、DOT、DOTX、DOC、または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でメールマージテンプレートを使用して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文書を示しています。
無料ライセンスを取得する
無料の一時ライセンスを取得することで、評価の制限なしにAspose.Words for Pythonを使用できます。
結論
MS Wordメールマージは、事前定義されたテンプレートからWord文書を生成するための便利な機能です。メールマージを自動化するために、この記事では、メールマージテンプレートを作成し、Pythonでデータを入力する方法について説明しました。 ドキュメントを使用して、Aspose.Words for Pythonの他の機能を調べることもできます。ご不明な点がございましたら、フォーラムまでお気軽に投稿してください。