【第147回】 すべての購読者の値を置換するスクリプトで取得するデータをフィルタリングする方法
前回の記事で、Salesforce Marketing Cloud の「すべての購読者」の値(購読者ステータス、HTML プリファレンス等)を置換するスクリプトを紹介しましたが、データエクステンション内の一部のデータだけを取得して置換するフィルタリングの方法について、ご質問頂きましたので、この記事で記載しておきます。
まずサンプルとして、以下のようなデータエクステンションを用意します。
以下のように、データエクステンションに値が格納されています。
今回「HTML」項目の値が「False」の場合のみ「HTML プリファレンス」を「テキスト」に変換してみます。今現在の「HTML プリファレンス」は下記の通り、両方とも「HTML」です。
そこで「HTML」項目の値が「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>
これを Automation Studio のスクリプトアクティビティで構成し、実行することで、「HTML」項目が「False」の場合のみ「HTML プリファレンス」を「テキスト」に変換することができました。
ちなみに、これが単一の条件ではなく「複数の値のいずれか」のような条件を作りたい場合は、SimpleOperatorsで「IN」を使用しますが、その際の Value には「配列」を使う必要があります。
今回は以上です。