0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】添付ファイルダウンロード時にメール通知を送る方法

0
Last updated at Posted at 2025-12-25

はじめに

Salesforceに格納されている添付ファイルがダウンロードされた際に、セキュリティ監査の目的などでメール通知を送りたいケースがあります。
本記事では、Salesforceの標準機能である「トランザクションセキュリティポリシー」を使用して、以下の2パターンの実装方法を紹介します。

  • すべてのファイルダウンロード時に通知する(ノーコード設定)
  • 「機密情報」フラグがあるファイルダウンロード時のみ通知する(Apex使用)

前提条件

この機能を使用するには、以下のライセンス(機能)が必要です。

  • Salesforce Shield または Event Monitoring(イベントモニタリング)

ノーコードでの設定方法

まずは条件ビルダーを使用して、すべてのファイルダウンロードを検知する設定を行います。

1. トランザクションセキュリティポリシーの設定ページへアクセス

クイック検索にて「トランザクション」と入力し、セキュリティ > イベントモニタリング > トランザクションセキュリティポリシー へアクセスします。
スクリーンショット 2025-12-25 10.11.30.png

「新規」ボタンをクリックします。
スクリーンショット 2025-12-25 10.11.41.png

2. トランザクションセキュリティポリシーが起動する条件を指定方法を選択

「条件ビルダー」をクリックします。
スクリーンショット 2025-12-25 10.11.52.png

3. トリガー条件を指定

  • 条件ロジック : すべての条件に一致(AND)
  • 条件 : ファイルアクション
  • 演算子 : 次の文字列に一致する
  • 値 : UI_DOWNLOAD
    スクリーンショット 2025-12-25 10.21.27.png

4. アクションの指定

  • アクション : なし
  • 通知 : メール通知
  • 受信者 : メール通知を行いたいユーザーを指定
  • メール通知のコンテンツ : デフォルトメールコンテンツ
  • 名前 : 任意のAPI名

スクリーンショット 2025-12-25 10.13.32.png

5. 完成

任意の添付ファイルをダウンロードすると、指定したユーザーへメール通知が送信されます。

スクリーンショット 2025-12-25 10.13.58.png

Apexを使用したポリシーのカスタマイズ

上記の実装では、Salesforce組織内のすべてのファイルが通知対象となります。
「特定の機密ファイルのみ監視したい」という要望に対して、Apexを用いて条件を絞り込む方法を解説します。

ここでは 「ContentVersion(ファイル)」オブジェクトに追加した『機密情報』項目にチェックがある場合のみ通知する というロジックを実装します。

1. コンテンツバージョンオブジェクトへカスタム項目を追加

  • 項目の表示ラベル : 機密情報
  • API名 : IsConfidential__c
  • データ型 : チェックボックス

2. トランザクションセキュリティポリシーが起動する条件を指定方法を選択

「Apex」を指定します。
スクリーンショット 2025-12-25 10.28.09.png

3. トリガー条件を指定

  • イベント : ファイルイベント
  • Apexクラス : 新しい空のApexクラス
    • これを選択すると、ひな形となるクラスが自動生成されます

スクリーンショット 2025-12-25 10.28.22.png

4. アクションの指定

  • アクション : なし
  • 通知 : メール通知
  • 受信者 : メール通知を行いたいユーザーを指定
  • メール通知のコンテンツ : デフォルトメールコンテンツ
  • 名前 : 任意のAPI名
    • Apexのファイル名となります
      スクリーンショット 2025-12-25 10.28.56.png

5. Apexの編集

生成されたApexクラスを編集します。

  • イベントからファイルIDを取得
  • ファイルIDを元に ContentVersion を検索
  • カスタム項目 IsConfidential__c が True なら通知する(Trueを返す)
global class ConfidentialFilePolicy implements TxnSecurity.EventCondition {
    public boolean evaluate(SObject event) {
        // 1. イベントオブジェクトを FileEvent にキャスト
        FileEventStore fEvent = (FileEventStore) event;

        // 2. ファイルID (VersionId) が存在するか確認
        if (fEvent.VersionId == null) {
            return false;
        }

        // 3. ファイルレコードを取得してカスタム項目 (IsConfidential__c) をチェック
        List<ContentVersion> cvs = [
            SELECT IsConfidential__c 
            FROM ContentVersion 
            WHERE Id = :fEvent.VersionId
        ];
        
        if (!cvs.isEmpty() && cvs[0].IsConfidential__c == true) {
            return true; // ポリシー発動(メール送信)
        }
        
        return false; // ポリシー発動しない
    }
}

6. 完成

機密情報にチェックが入っているファイルがダウンロードされた場合にのみメール通知が送信されるようになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?