【第249回】 REST API を使ってメッセージ内の文字列からメールを探す方法
これまで、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 でも、結果は同じです。
いかがでしたでしょうか。
これにより、あるメールの中で使用されていたフレーズなどを基にメール子コンテンツを探しやすくなりました。トラブルシューティングや、古い本文の内容を変更したい場合に活用できると思います。ぜひお試しください。
今回は以上です。
