メインコンテンツへスキップ
見出し画像
Photo byakisuke0925

【第249回】 REST API を使ってメッセージ内の文字列からメールを探す方法

    Nobuyuki Watanabe

    これまで、Salesforce Marketing Cloud の REST API を活用して、以下のようなデータの取得方法を紹介してきました。

    • Automation Studio の SQL クエリアクティビティの クエリテキスト を一括取得する方法

    • Journey Builder のエントリーソースで使用されている データエクステンションの名前 や スケジュール開始時間 を一括で取得する方法

    今回は、Content Builder 内のメッセージに含まれる特定の文字列から、該当するメールを検索する方法を説明したいと思います。


    検索の対象範囲

    この方法では、AMPscript の文字列も検索対象になりますが、HTML タグは含まれません。つまり、Content Builder の「デフォルト」ビューに表示される文字列 が検索対象となります。

    Content Builder の「デフォルト」ビューとは、以下のことを指します。

    画像

    たとえば、メール本文に以下の AMPscript が含まれている場合を考えます。

    %%=ContentBlockById("30810786")=%%

    上の図にも、それが同様に含まれていることが分かります。

    この場合、「30810786」という文字列を検索すると、この ContentBlockById を使用しているメールを特定できるわけです。また、AND 条件を使用して複数の文字列を組み合わせることで、より詳細に絞り込むことも可能です。

    それでは、以下で具体的な REST API の使用方法について解説します。


    事前準備

    今回の記事では、REST API を使用します。過去の連載「Marketing Cloud REST API 超入門」の Part.1 と Part.2 で紹介した以下の 2 つが必要です。

    ■ Part.1 の REST ベース URL
    ■ Part.2 の アクセストークン

    今回、以下のスコープがセットアップで選択されている必要があります。
    ■ ASSETS - Documents and Images - Read


    実装方法

    1. シンプルな文字列検索

    特定の文字列を検索する場合の方法です。例として、「30810786」を検索するケースを考えます。以下の設定を Talend API Tester または Postman に構成してください。

    --- メソッド 
    POST
    
    --- エンドポイント
    https://[REST ベース URL].rest.marketingcloudapis.com/asset/v1/content/assets/query
    
    --- ヘッダー
    Content-Type:application/json 
    Authorization:Bearer [アクセストークン] 
    
    --- ボディサンプル
    {
      "page": {
        "page": 1,
        "pageSize": 500
      },
      "query": {    
          "property": "content",
          "simpleOperator": "mustcontain",
          "value": "30810786"
      },
      "fields": [
        "id",
        "name"
      ]
    }

    コード内にある「mustcontain」は複数条件にも対応していますが、単一条件での利用も可能です。

    このリクエストを実行すると、以下のような結果が返されます。例として「Sample Email」というテンプレートベースのメールが特定される場合を示します。

    画像

    実際に「Sample Email」を確認すると、以下の通り「30810786」が含まれていることが確認できます。

    画像

    2. 複数の文字列検索

    続いて、例えば「Unmissable Opportunity」(見逃せないチャンス)というフレーズを使用したメールを特定したい場合、以下の設定を使用します。

    --- メソッド 
    POST
    
    --- エンドポイント
    https://[REST ベース URL].rest.marketingcloudapis.com/asset/v1/content/assets/query
    
    --- ヘッダー
    Content-Type:application/json 
    Authorization:Bearer [アクセストークン] 
    
    --- ボディサンプル
    {
      "page": {
        "page": 1,
        "pageSize": 500
      },
      "query": {    
          "property": "content",
          "simpleOperator": "mustcontain",
          "value": "Unmissable Opportunity"
      },
      "fields": [
        "id",
        "name"
      ]
    }

    先ほども述べた通り、コード内にある「mustcontain」は複数条件にも対応していますので、このフレーズをそのまま入力します。

    このリクエストを実行すると、「Sample Email 2」というテンプレートベースのメールが特定される結果が返されます。

    画像

    実際に「Sample Email 2」を確認すると、「Unmissable Opportunity」が含まれていることが分かります。

    画像

    3. コンテンツタイプを条件に加えた複合検索

    次に、特定のコンテンツタイプ(例: htmlblock)を条件に加えた検索を行います。最後は、結果を例示しませんが、以下のように記述してください。

    --- メソッド 
    POST
    
    --- エンドポイント
    https://[REST ベース URL].rest.marketingcloudapis.com/asset/v1/content/assets/query
    
    --- ヘッダー
    Content-Type:application/json 
    Authorization:Bearer [アクセストークン] 
    
    --- ボディサンプル
    {
      "page": {
        "page": 1,
        "pageSize": 500
      },
      "query": {
        "leftOperand": {
          "property": "content",
          "simpleOperator": "mustcontain",
          "value": "Spring Sale 2025"
        },
        "logicalOperator": "AND",
        "rightOperand": {
          "property": "assetType.name",
          "simpleOperator": "equal",
          "value": "htmlblock"
        }
      },
      "fields": [
        "id",
        "name"
      ]
    }

    使用可能な assetType.name の例
    - templatebasedemail
    - htmlemail
    - textonlyemail
    - freeformblock
    - textblock
    - htmlblock
    - imageblock
    - buttonblock
    - layoutblock

    すべての assetType.name の詳細については、以下を参照してください。

    補足

    • 複数条件の検索ワードは、順不同でも問題ありません。
      例:Spring Sale でも Sale Spring でも、結果は同じです。

    • 大文字・小文字の区別はありません。
      例:Spring Sale でも spring sale でも、結果は同じです。


    いかがでしたでしょうか。

    これにより、あるメールの中で使用されていたフレーズなどを基にメール子コンテンツを探しやすくなりました。トラブルシューティングや、古い本文の内容を変更したい場合に活用できると思います。ぜひお試しください。

    今回は以上です。


    次の記事はこちら

    前回の記事はこちら

    私の自己紹介はこちら

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資格に関する実践的な情報を発信しています。これらの記事が、皆さまの学習や日々の業務に少しでもお役に立てば幸いです。