.NET の PowerPoint プレゼンテーションで感度ラベルを管理する

概要

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

Aspose.Slides は、Presentation.SensitivityLabels を介して最新の感度ラベルメタデータを公開します。このプロパティは、検査および保存前に変更できる ISensitivityLabelCollection を返します。

感度ラベルプロパティの理解

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

プロパティ 目的
ISensitivityLabel.Id Purview ポリシー内の感度ラベルを識別します。
ISensitivityLabel.SiteId ラベルポリシーに関連付けられたサイトを識別します。
ISensitivityLabel.IsEnabled ラベルが有効かどうかを示します。
ISensitivityLabel.IsRemoved ラベルが削除されたことを示します。メタデータに削除状態を保持する必要がある場合は、このプロパティを true に設定します。
ISensitivityLabel.AssignmentMethodType ラベルが自動的に適用されたか、ユーザーの判断で適用されたかを指定します。
ISensitivityLabel.ContentMarkTypes ラベルに関連付けられたコンテンツマーキングタイプの一覧を示します。

SensitivityLabelAssignmentType 列挙体は、ラベルの割り当て方法を表します。

SensitivityLabelContentType 列挙体は、ラベルに関連付けられるマーキングを特定します。

値 意味
SensitivityLabelContentType.None ラベルはデフォルトまたは自動的に適用されました。
SensitivityLabelContentType.Header ヘッダー コンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.Footer フッター コンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.Watermark ウォーターマーク コンテンツマーキングがラベルに関連付けられています。
SensitivityLabelContentType.Encryption 暗号化保護がラベルに関連付けられています。

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

既存の感度ラベルを一覧表示

Presentation.SensitivityLabels から最新のラベルコレクションを読み取り、列挙します。以下の例は、各ラベルに保存されているすべてのプロパティとコンテンツマーキングを一覧表示します。

using System;
using Aspose.Slides;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;

foreach (var sensitivityLabel in sensitivityLabels)
{
    Console.WriteLine("Label ID: " + sensitivityLabel.Id);
    Console.WriteLine("Site ID: " + sensitivityLabel.SiteId);
    Console.WriteLine("Enabled: " + sensitivityLabel.IsEnabled);
    Console.WriteLine("Removed: " + sensitivityLabel.IsRemoved);
    Console.WriteLine("Assignment method: " + sensitivityLabel.AssignmentMethodType);

    foreach (var contentMarkType in sensitivityLabel.ContentMarkTypes)
    {
        Console.WriteLine("Content marking: " + contentMarkType);
    }
}

コンテンツマーキング付きの感度ラベルを追加

ISensitivityLabelCollection.Add を使用して、ラベル識別子、サイト識別子、有効状態、割り当て方法を指定します。メソッドが新しい ISensitivityLabel を返したら、ISensitivityLabel.ContentMarkTypes を介して必要なマーキング値を追加します。

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

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;

var labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
var siteIdentifier = Guid.Parse("{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}");
var isEnabled = true;
var assignmentMethod = SensitivityLabelAssignmentType.Privileged;

var sensitivityLabel = sensitivityLabels.Add(
    labelIdentifier,
    siteIdentifier,
    isEnabled,
    assignmentMethod);

sensitivityLabel.ContentMarkTypes.Add(SensitivityLabelContentType.Footer);
sensitivityLabel.ContentMarkTypes.Add(SensitivityLabelContentType.Watermark);

presentation.Save("presentation_with_label.pptx", SaveFormat.Pptx);

感度ラベルを更新

ISensitivityLabel のプロパティは読み書き可能ですが、ISensitivityLabel.ContentMarkTypes が返すコレクションはそのリスト操作を通じて変更します。目的のラベルを見つけたら、識別子、サイト識別子、有効状態、割り当て方法、削除状態、コンテンツマーキングタイプを更新できます。プレゼンテーションを保存して変更を永続化してください。

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

using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;

if (sensitivityLabels.Count > 0)
{
    var sensitivityLabel = sensitivityLabels[0];
    sensitivityLabel.IsEnabled = true;
    sensitivityLabel.AssignmentMethodType = SensitivityLabelAssignmentType.Privileged;
}

presentation.Save("presentation_with_updated_label.pptx", SaveFormat.Pptx);

感度ラベルを削除済みとしてマーク

ラベルが削除された事実を保持するために、ラベルを見つけて ISensitivityLabel.IsRemoved を true に設定します。これによりラベルエントリは保持され、削除状態が記録されます。代わりに最新コレクションからエントリを削除する必要がある場合は、ISensitivityLabelCollection.RemoveAt を使用し、すべてのエントリを削除するには ISensitivityLabelCollection.Clear を使用します。

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

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation.pptx");
var sensitivityLabels = presentation.SensitivityLabels;
var targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";

foreach (var sensitivityLabel in sensitivityLabels)
{
    var isTargetLabel = string.Equals(
        sensitivityLabel.Id,
        targetLabelIdentifier,
        StringComparison.OrdinalIgnoreCase);

    if (isTargetLabel)
    {
        sensitivityLabel.IsRemoved = true;
        break;
    }
}

presentation.Save("presentation_with_removed_label.pptx", SaveFormat.Pptx);

レガシー MIP 感度ラベルを読み取り・移行

古い MIP ベースのワークフローは、最新のラベルコレクションではなくカスタム ドキュメント プロパティに感度ラベルメタデータを格納することがあります。これらのメタデータは IDocumentProperties.GetSensitivityLabels で読み取れます。このメソッドはレガシー カスタム プロパティを解析し、ISensitivityLabel オブジェクトの配列を返します。

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

using System;
using Aspose.Slides;
using Aspose.Slides.Export;

using var presentation = new Presentation("presentation_with_legacy_labels.pptx");
var legacySensitivityLabels = presentation.DocumentProperties.GetSensitivityLabels();
var modernSensitivityLabels = presentation.SensitivityLabels;

foreach (var legacySensitivityLabel in legacySensitivityLabels)
{
    var labelAlreadyExists = false;

    foreach (var modernSensitivityLabel in modernSensitivityLabels)
    {
        labelAlreadyExists = string.Equals(
            modernSensitivityLabel.Id,
            legacySensitivityLabel.Id,
            StringComparison.OrdinalIgnoreCase);

        if (labelAlreadyExists)
        {
            break;
        }
    }

    if (!labelAlreadyExists)
    {
        modernSensitivityLabels.Add(legacySensitivityLabel);
    }
}

presentation.Save("presentation_with_modern_labels.pptx", SaveFormat.Pptx);

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

FAQ

コンテンツマーキングタイプを追加しても、スライドに目に見えるヘッダー、フッター、またはウォーターマークが作成されますか?

いいえ。ISensitivityLabel.ContentMarkTypes で追加された値は、感度ラベルに関連付けられたマーキングを記述するだけで、プレゼンテーションに目に見えるテキストや図形を自動的に作成しません。必要に応じて、別途スライドコンテンツを追加してください。

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

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

プレゼンテーションにレガシー MIP メタデータと最新の感度ラベルの両方を含めることは可能ですか?

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

同じ識別子を持つラベルを複数回追加しようとするとどうなりますか?

ISensitivityLabelCollection.Add は、コレクションに同じ識別子のラベルが既に存在する場合 ArgumentException をスローします。ラベルを追加または移行する前に、既存の ISensitivityLabel.Id を確認してください。

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

上記の例に示すように、IPresentation.Save とともに SaveFormat.Pptx を指定してプレゼンテーションを PPTX として保存してください。