見出し画像

【第147回】 すべての購読者の値を置換するスクリプトで取得するデータをフィルタリングする方法

前回の記事で、Salesforce Marketing Cloud の「すべての購読者」の値(購読者ステータス、HTML プリファレンス等)を置換するスクリプトを紹介しましたが、データエクステンション内の一部のデータだけを取得して置換するフィルタリングの方法について、ご質問頂きましたので、この記事で記載しておきます。


まずサンプルとして、以下のようなデータエクステンションを用意します。

以下のように、データエクステンションに値が格納されています。

今回「HTML」項目の値が「False」の場合のみ「HTML プリファレンス」を「テキスト」に変換してみます。今現在の「HTML プリファレンス」は下記の通り、両方とも「HTML」です。

左:AOR501 | 右:AOR502

そこで「HTML」項目の値が「False」の場合という条件でフィルターを作るには、下記のようにフィルターを設定します。

{Property:"HTML", SimpleOperator:"equals", Value:"False"}

こちらを「var data = dataExtension.Rows.Retrieve(); 」のカッコ内に挿入します。スクリプト全体としては、以下のような形になります。

<script runat="server">
Platform.Load("core", "1");

// データエクステンションの外部キーを指定
var dataExtensionExternalKey = "1C99315A-F4A7-4F48-B06D-EAE9BD0A0FDF";

// データエクステンションを初期化
var dataExtension = DataExtension.Init(dataExtensionExternalKey)

// データエクステンションをフィルタリングして一部のレコードを取得
var data = dataExtension.Rows.Retrieve({Property:"HTML", SimpleOperator:"equals", Value:"False"});

// レコードをループして購読者のステータスを変更
for (var i = 0; i < data.length; i++) {
    var subscriberKey = data[i].Subscriberkey; // SubscriberKeyを取得

    var subscriber = {
        SubscriberKey: subscriberKey,
        EmailTypePreference: "Text" // HTML プリファレンスを指定(HTML/Text)
    };

    // Subscriber オブジェクトを初期化して購読者のステータスを更新
    var subObj = Subscriber.Init(subscriberKey);
    var updateStatus = subObj.Update(subscriber);

}
</script>

ちなみに、フィルターで使った SimpleOperators(演算子)には、以下のようなものがあります。参考にして下さい。

これを Automation Studio のスクリプトアクティビティで構成し、実行することで、「HTML」項目が「False」の場合のみ「HTML プリファレンス」を「テキスト」に変換することができました

左:AOR501(HTML:True) | 右:AOR502(HTML:False)

ちなみに、これが単一の条件ではなく「複数の値のいずれか」のような条件を作りたい場合は、SimpleOperatorsで「IN」を使用しますが、その際の Value には「配列」を使う必要があります

{Property:"field", SimpleOperator:"IN", Value: ["A","B","C"]}

今回は以上です。


Click here for English version

次の記事はこちら

前回の記事はこちら

私の note のトップページはこちら

この記事が気に入ったらサポートをしてみませんか?