【第146回】 すべての購読者の「購読者ステータス」を一括置換するスクリプト
Salesforce Marketing Cloud において、すべての購読者の「購読者ステータス」を他のステータスに一括で置換したいという要望はありませんか?
例えば、以前に「保留(Held)」の購読者ステータスに関する記事を書いたのですが、そこで説明した通り、購読者のメールアドレスが変更された際に、該当する購読者の「保留」ステータスを、一括で「アクティブ化」するようなケースがあるかと思います。
■「購読者ステータス」の一括置換
このような場合は、すべての購読者リストにインポートで対応することもできますが、以下のようなスクリプトを Automation Studio のスクリプトアクティビティで構成することで、簡単に一括で置換することができます。
<script runat="server">
Platform.Load("core", "1");
// データエクステンションの「外部キー」を指定
var dataExtensionExternalKey = "1C99315A-F4A7-4F48-B06D-EAE9BD0A0FDF";
// データエクステンションを初期化
var dataExtension = DataExtension.Init(dataExtensionExternalKey);
// データエクステンションからすべてのレコードを取得(※フィルター無し)
var data = dataExtension.Rows.Retrieve();
// レコードをループして購読者のステータスを変更
for (var i = 0; i < data.length; i++) {
var subscriberKey = data[i].Subscriberkey; // 「SubscriberKey」を取得
var subscriber = {
SubscriberKey: subscriberKey,
Status: "Active" // ステータスを指定(例: アクティブに置換する場合)
};
// Subscriber オブジェクトを初期化して購読者のステータスを更新
var subObj = Subscriber.Init(subscriberKey);
var updateStatus = subObj.Update(subscriber);
}
</script>
データエクステンションの「外部キー」は以下の箇所から取得できます。
これにより、データを FTP などを経由させることなく、すべての購読者のステータスを置換することが可能になりますね。
■「HTML プリファレンス」の一括置換
また、あるデータエクステンションに格納されている複数の購読者の「HTML プリファレンス」をデフォルトの「HTML」から「TEXT」に一括で置換したり、「HTML」へ戻したりすることも可能です。
<script runat="server">
Platform.Load("core", "1");
// データエクステンションの外部キーを指定
var dataExtensionExternalKey = "1C99315A-F4A7-4F48-B06D-EAE9BD0A0FDF";
// データエクステンションを初期化
var dataExtension = DataExtension.Init(dataExtensionExternalKey);
// データエクステンションからすべてのレコードを取得
var data = dataExtension.Rows.Retrieve();
// レコードをループして購読者のステータスを変更
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>
もし、「Status」と「HTML プリファレンス」を同時に更新したい場合は、以下のように設定します。(「アクティブ」かつ「HTML」にする場合。)
var subscriber = {
SubscriberKey: subscriberKey,
Status: "Active", // 👈️ このカンマをお忘れなく!
EmailTypePreference: "HTML"
};
今回は以上です。