PythonでWord文書のプロパティを追加、読み取り、削除する方法

PythonでWord文書を処理する際、ドキュメントプロパティの操作は重要な作業です。ドキュメントプロパティには、タイトルや作成者などの**組み込みプロパティ**と、ユーザーが独自に定義できる**ユーザー設定プロパティ**の2種類があります。これらを適切に管理することで、文書管理の効率を向上させ、情報検索を最適化し、文書データの正確性と安全性を確保できます。本記事では、**Pythonを使用してWord文書のドキュメントプロパティを追加、読み取り、削除する方法**について解説します。

- **[PythonでWord文書にドキュメントプロパティを追加する](#pythonでword文書にドキュメントプロパティを追加する)**
- **[PythonでWord文書のドキュメントプロパティを読み取る](#pythonでword文書のドキュメントプロパティを読み取る)**
- **[PythonでWord文書のドキュメントプロパティを削除する](#pythonでword文書のドキュメントプロパティを削除する)**

本記事で紹介する方法は、無料のFree Spire.Doc for Pythonライブラリを使用します。PyPIからインストールするには、次のコマンドを実行してください：`pip install spire.doc.free`。

## PythonでWord文書にドキュメントプロパティを追加する
ライブラリのクラスとメソッドを使用すると、ファイルやストリームからWord文書を直接読み込んで処理できます。**組み込みプロパティ**を追加するには、`Document.BuiltinDocumentProperties`を使用して該当プロパティにアクセスし、値を設定します。**ユーザー設定プロパティ**を追加するには、`CustomDocumentProperties.Add()`メソッドを使用します。具体的な手順は以下のとおりです：

1. 必要なモジュール（`Document`、`String`、`Int32`、`DateTime`、`Boolean`）をインポートします。
2. `Document`クラスのインスタンスを作成します。
3. `Document.LoadFromFile()`メソッドでWord文書を読み込みます。
4. **組み込みプロパティ**を設定する場合は、`Document.BuiltinDocumentProperties`を使用して該当プロパティの値を変更します。
5. **ユーザー設定プロパティ**を追加する場合は、`Document.CustomDocumentProperties`を使用し、`Add()`メソッドで異なるデータ型のプロパティを追加します。
6. `Document.SaveToFile()`メソッドを使用して変更を保存します。

**コード例**
```python
from spire.doc import Document, String, Int32, DateTime, Boolean

# Documentオブジェクトの作成
doc = Document()
# Word文書をロード
doc.LoadFromFile("Sample.docx")

# 組み込みプロパティの追加
builtin_prop = doc.BuiltinDocumentProperties
builtin_prop.Title = "Pythonによる文書プロパティ操作"
builtin_prop.Author = "コード開発者"
builtin_prop.Category = "技術チュートリアル"
builtin_prop.Keywords = "Python,Word,プロパティ操作"

# カスタムプロパティの追加
custom_prop = doc.CustomDocumentProperties
custom_prop.Add("プロジェクトID", String("PRJ001"))
custom_prop.Add("進捗", Int32(80))
custom_prop.Add("締切日", DateTime(2024, 12, 31, 0, 0, 0, 0))
custom_prop.Add("重要かどうか", Boolean(True))

# 文書の保存
doc.SaveToFile("output/プロパティ追加後の文書.docx")
doc.Close()
```

結果
![PythonでWord文書にドキュメントプロパティを追加](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/ad59e57a-37c6-4869-a2ee-c9dfd09ee753.png)

## PythonでWord文書のドキュメントプロパティを読み取る
`BuiltinDocumentProperties`クラスのプロパティを使用すると、**組み込みプロパティ**を取得できます。また、**ユーザー設定プロパティ**を読み取るには、`CustomDocumentProperty.Name`および`CustomDocumentProperty.Value`（または`CustomDocumentProperty.ToString()`で文字列として取得）を使用します。具体的な手順は以下のとおりです：

1. 必要なモジュール（`Document`）をインポートします。
2. `Document`クラスのインスタンスを作成します。
3. `Document.LoadFromFile()`メソッドで、プロパティが設定されたWord文書を読み込みます。
4. **組み込みプロパティ**を取得する場合は、`Document.BuiltinDocumentProperties`を使用します。
5. **ユーザー設定プロパティ**を取得する場合は、`Document.CustomDocumentProperties`を使用し、各プロパティの名前と値を取得します。
6. 取得したプロパティ値を出力またはさらに処理します。

**コード例**
```python
from spire.doc import Document

# Documentオブジェクトの作成
doc = Document()
# Word文書をロード
doc.LoadFromFile("output/プロパティ追加後の文書.docx")

# 組み込みプロパティの読み取り
builtin_prop = doc.BuiltinDocumentProperties
print("組み込みプロパティ:")
print(f"タイトル: {builtin_prop.Title}")
print(f"作者: {builtin_prop.Author}")
print(f"カテゴリ: {builtin_prop.Category}")
print(f"キーワード: {builtin_prop.Keywords}")

# カスタムプロパティの読み取り
custom_prop = doc.CustomDocumentProperties
print("\nカスタムプロパティ:")
for i in range(custom_prop.Count):
    prop_name = custom_prop.get_Item(i).Name
    prop_value = custom_prop.get_Item(i).ToString()
    print(f"{prop_name}: {prop_value}")

doc.Close()
```

結果
![PythonでWord文書のドキュメントプロパティを読み取る](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/f8c53f21-6ed0-43b8-bf18-fe2e3d990d24.png)

## PythonでWord文書のドキュメントプロパティを削除する
**組み込みプロパティ**を削除するには、その値を`None`に設定します。**ユーザー設定プロパティ**を削除するには、`DocumentProperties.Remove()`メソッドを使用します。具体的な手順は以下のとおりです：

1. 必要なモジュール（`Document`）をインポートします。
2. `Document`クラスのインスタンスを作成します。
3. `Document.LoadFromFile()`メソッドで、削除対象のプロパティを含むWord文書を読み込みます。
4. **組み込みプロパティ**を削除する場合は、`Document.BuiltinDocumentProperties`を使用し、削除するプロパティの値を`None`に設定します。
5. **ユーザー設定プロパティ**を削除する場合は、`Document.CustomDocumentProperties`を使用し、`Remove()`メソッドで不要なプロパティを削除します。
6. `Document.SaveToFile()`メソッドを使用して変更を保存します。

**コード例**
```python
from spire.doc import Document

# Documentオブジェクトの作成
doc = Document()
# Word文書をロード
doc.LoadFromFile("output/プロパティ追加後の文書.docx")

# 組み込みプロパティの削除
builtin_prop = doc.BuiltinDocumentProperties
builtin_prop.Title = None
builtin_prop.Author = None
builtin_prop.Category = None
builtin_prop.Keywords = None

# カスタムプロパティの削除
custom_prop = doc.CustomDocumentProperties
for i in range(custom_prop.Count - 1, -1, -1):
    custom_prop.Remove(custom_prop[i].Name)

# 文書の保存
doc.SaveToFile("output/属性削除後の文書.docx")
doc.Close()
```

本記事では、Pythonを使用してWord文書の**組み込みプロパティ**および**ユーザー設定プロパティ**を追加、読み取り、削除する方法について解説しました。