![見出し画像](https://assets.st-note.com/production/uploads/images/136223726/rectangle_large_type_2_2f553ebe42cbda6f0267a5c2c22f7703.png?width=1200)
【第147回】 すべての購読者の値を置換するスクリプトで取得するデータをフィルタリングする方法
前回の記事で、Salesforce Marketing Cloud の「すべての購読者」の値(購読者ステータス、HTML プリファレンス等)を置換するスクリプトを紹介しましたが、データエクステンション内の一部のデータだけを取得して置換するフィルタリングの方法について、ご質問頂きましたので、この記事で記載しておきます。
まずサンプルとして、以下のようなデータエクステンションを用意します。
![](https://assets.st-note.com/img/1712292266096-oCRc4xBSQt.png?width=1200)
以下のように、データエクステンションに値が格納されています。
![](https://assets.st-note.com/img/1712614546733-QMj5vYVmsW.png?width=1200)
今回「HTML」項目の値が「False」の場合のみ「HTML プリファレンス」を「テキスト」に変換してみます。今現在の「HTML プリファレンス」は下記の通り、両方とも「HTML」です。
![](https://assets.st-note.com/img/1712295142123-oI3CCL0ks9.png?width=1200)
そこで「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 プリファレンス」を「テキスト」に変換することができました。
![](https://assets.st-note.com/img/1712296722617-aCLayXI1Vw.png)
![](https://assets.st-note.com/img/1712296510439-IkksdfcCSu.png?width=1200)
ちなみに、これが単一の条件ではなく「複数の値のいずれか」のような条件を作りたい場合は、SimpleOperatorsで「IN」を使用しますが、その際の Value には「配列」を使う必要があります。
{Property:"field", SimpleOperator:"IN", Value: ["A","B","C"]}
今回は以上です。
Click here for English version
次の記事はこちら
前回の記事はこちら
私の note のトップページはこちら
この記事が気に入ったらサポートをしてみませんか?