Python で PowerPoint プレゼンテーションの機密ラベルを管理

概要

Microsoft Purview の機密ラベルは、組織がドキュメントを分類および管理できるようにします。自動化されたプレゼンテーション処理中に、アプリケーションは既存のラベルを保持したり、ポリシーで選択されたラベルを適用したり、状態を更新したり、古い Microsoft Information Protection (MIP) ワークフローで書き込まれたラベルメタデータを移行したりする必要があります。

Aspose.Slides for Python via .NET は、Presentation.sensitivity_labels を通じて最新の機密ラベルメタデータを公開します。このプロパティは、保存前に検査および変更できる SensitivityLabelCollection を返します。

機密ラベルプロパティの理解

SensitivityLabel には以下のメタデータが含まれます。

プロパティ 目的
SensitivityLabel.id Purview ポリシー内の機密ラベルを識別します。
SensitivityLabel.site_id ラベルポリシーに関連付けられたサイトを識別します。
SensitivityLabel.is_enabled ラベルが有効かどうかを示します。
SensitivityLabel.is_removed ラベルが削除されたことを示します。削除状態をメタデータに保持する必要がある場合はこのプロパティを True に設定します。
SensitivityLabel.assignment_method_type ラベルが自動的に適用されたかユーザーの判断で適用されたかを示します。
SensitivityLabel.content_mark_types ラベルに関連付けられたコンテンツマーキングの種類を一覧表示します。

SensitivityLabelAssignmentType 列挙型は、ラベルがどのように割り当てられたかを表します。

SensitivityLabelContentType 列挙型は、ラベルに関連付けられたマーキングを識別します。

意味
SensitivityLabelContentType.NONE ラベルがデフォルトまたは自動的に適用されたことを示します。
SensitivityLabelContentType.HEADER ヘッダーコンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.FOOTER フッターコンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.WATERMARK ウォーターマークコンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.ENCRYPTION 暗号化保護がラベルに関連付けられています。

複数のマーキングタイプを 1 つのラベルに関連付けることができます。

既存の機密ラベルの一覧取得

Presentation.sensitivity_labels から最新のラベルコレクションを取得し、列挙します。次の例は各ラベルに保存されているすべてのプロパティとコンテンツマーキングを列挙します。

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels

    for sensitivity_label in sensitivity_labels:
        print("Label ID:", sensitivity_label.id)
        print("Site ID:", sensitivity_label.site_id)
        print("Enabled:", sensitivity_label.is_enabled)
        print("Removed:", sensitivity_label.is_removed)
        print("Assignment method:", sensitivity_label.assignment_method_type)

        for content_mark_type in sensitivity_label.content_mark_types:
            print("Content marking:", content_mark_type)

コンテンツマーキング付き機密ラベルの追加

ラベル識別子、サイト識別子、有効状態、割り当て方法を指定して SensitivityLabelCollection.add を使用します。サイト識別子は Python の uuid.UUID オブジェクトとして渡します。メソッドが新しい SensitivityLabel を返したら、必要なマーキング値を SensitivityLabel.content_mark_types に追加します。

次の例は、フッターとウォーターマークのマーキングが関連付けられた手動選択ラベルを追加し、結果を PPTX として保存します。

import uuid
import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels

    label_identifier = "{11111111-2222-3333-4444-555555555555}"
    site_identifier = uuid.UUID("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")
    is_enabled = True
    assignment_method = slides.SensitivityLabelAssignmentType.PRIVILEGED

    sensitivity_label = sensitivity_labels.add(
        label_identifier,
        site_identifier,
        is_enabled,
        assignment_method
    )

    sensitivity_label.content_mark_types.append(slides.SensitivityLabelContentType.FOOTER)
    sensitivity_label.content_mark_types.append(slides.SensitivityLabelContentType.WATERMARK)

    presentation.save("presentation_with_label.pptx", slides.export.SaveFormat.PPTX)

機密ラベルの更新

SensitivityLabel のプロパティは読み書き可能です。ただし、SensitivityLabel.content_mark_types が返すリストはそのリスト操作によって変更します。対象ラベルを特定したら、識別子、サイト識別子、有効状態、割り当て方法、削除状態、コンテンツマーキングタイプを更新できます。変更を永続化するためにプレゼンテーションを保存します。

次の例は、最初のラベルの有効状態と割り当て方法を更新します。

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels

    if sensitivity_labels.count > 0:
        sensitivity_label = sensitivity_labels[0]
        sensitivity_label.is_enabled = True
        sensitivity_label.assignment_method_type = (
            slides.SensitivityLabelAssignmentType.PRIVILEGED
        )

    presentation.save("presentation_with_updated_label.pptx", slides.export.SaveFormat.PPTX)

機密ラベルを削除済みとしてマークする

ラベルが削除されたことを保持したい場合は、ラベルを検索し、SensitivityLabel.is_removedTrue に設定します。これによりラベルエントリは残り、削除状態が記録されます。モダンコレクションからエントリ自体を削除したい場合は、SensitivityLabelCollection.remove_at を使用し、すべてのエントリを削除するには SensitivityLabelCollection.clear を使用します。

次の例は特定のラベルを削除済みとしてマークし、更新されたプレゼンテーションを保存します。

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    sensitivity_labels = presentation.sensitivity_labels
    target_label_identifier = "{11111111-2222-3333-4444-555555555555}"

    for sensitivity_label in sensitivity_labels:
        identifiers_match = (
            sensitivity_label.id.casefold() == target_label_identifier.casefold()
        )

        if identifiers_match:
            sensitivity_label.is_removed = True
            break

    presentation.save("presentation_with_removed_label.pptx", slides.export.SaveFormat.PPTX)

レガシー MIP 機密ラベルの読み取りと移行

古い MIP ベースのワークフローは、最新のラベルコレクションではなくカスタムドキュメントプロパティに機密ラベルメタデータを保存することがあります。DocumentProperties.get_sensitivity_labels を使用してそのメタデータを読み取ります。このメソッドはレガシーカスタムプロパティを解析し、SensitivityLabel オブジェクトを返します。

メタデータを移行するには、返された各ラベルを SensitivityLabelCollection.add を介して最新の SensitivityLabelCollection に追加します。重複したラベル識別子の追加は例外を発生させるため、例ではコピー前に宛先コレクションをチェックしています。各レガシーラベルが現在の Purview ポリシーにまだ存在するかどうかを検証するロジックを追加することもできます。

import aspose.slides as slides

with slides.Presentation("presentation_with_legacy_labels.pptx") as presentation:
    legacy_sensitivity_labels = (
        presentation.document_properties.get_sensitivity_labels()
    )
    modern_sensitivity_labels = presentation.sensitivity_labels

    for legacy_sensitivity_label in legacy_sensitivity_labels:
        label_already_exists = False

        for modern_sensitivity_label in modern_sensitivity_labels:
            label_already_exists = (
                modern_sensitivity_label.id.casefold()
                == legacy_sensitivity_label.id.casefold()
            )

            if label_already_exists:
                break

        if not label_already_exists:
            modern_sensitivity_labels.add(legacy_sensitivity_label)

    presentation.save("presentation_with_modern_labels.pptx", slides.export.SaveFormat.PPTX)

移行は解析されたラベルオブジェクトを最新コレクションにコピーします。すべてのカスタムドキュメントプロパティをクリアする必要はなく、無関係なドキュメントメタデータはそのまま残ります。Presentation.saveSaveFormat.PPTX を使用して、最新のラベルメタデータを PPTX ファイルに書き込みます。

FAQ

コンテンツマーキングタイプを追加すると、スライドに可視的なヘッダー、フッター、またはウォーターマークが作成されますか?

いいえ。SensitivityLabel.content_mark_types で追加された値は機密ラベルに関連付けられたマーキングを記述するだけで、プレゼンテーションに可視的なテキストや図形は作成しません。必要に応じて、別途スライドコンテンツを追加してこれらのマーキングを表示させてください。

ラベルを「削除済み」とマークすることと、コレクションから削除することの違いは何ですか?

SensitivityLabel.is_removedTrue に設定すると、ラベルエントリは残り、削除状態が記録されます。SensitivityLabelCollection.remove_at を呼び出すと、最新コレクションからエントリ自体が削除されます。組織のメタデータ保持要件に合わせて操作を選択してください。

プレゼンテーションにレガシー MIP メタデータと最新の機密ラベルの両方を同時に含めることはできますか?

はい。レガシーラベルはカスタムドキュメントプロパティに残したままにでき、最新のラベルは Presentation.sensitivity_labels から取得できます。DocumentProperties.get_sensitivity_labels を使用してレガシー メタデータを読み取り、最新コレクションにまだ存在しない有効なラベルだけを移行してください。

同一識別子のラベルを複数回追加するとどうなりますか?

SensitivityLabelCollection.add は、コレクションに同じ識別子のラベルがすでに存在する場合に例外をスローします。ラベルを追加または移行する前に、既存の SensitivityLabel.id 値を確認してください。

更新された機密ラベルを保持するために使用すべき出力形式はどれですか?

上記の例のように、Presentation.saveSaveFormat.PPTX を指定してプレゼンテーションを PPTX として保存してください。