見出し画像

【第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>

このコードの中で皆さんが変更する必要があるのは、以下の 2 つのみです。

■ データエクステンションの「外部キー」
■ データエクステンション内の 購読者キーの「項目名」


※ 上記は、購読者キーの項目名が「Subscriberkey」だった場合を想定しています。「var subscriberKey = data[i].XXXXX」の「XXXXX」の部分で指定していますので、皆さんのデータエクステンションの項目名に合わせて変更して下さい。

※ 上記は、アクティブのステータスに置換する例ですが、購読取り消し済みのステータスに置換したい場合は、「Active」の部分を「Unsubscribed」に変更して下さい。

※ 上記は、フィルターなどは使わずに、データエクステンション内の「すべての」レコードを取得して一括置換する例になります。フィルターを使う例は別の記事で作成しました。下記を参照して下さい。

データエクステンションの「外部キー」は以下の箇所から取得できます。

これにより、データを FTP などを経由させることなく、すべての購読者のステータスを置換することが可能になりますね。

このようなスクリプトアクティビティを扱う場合は、最初は少量のテストデータで試験を行い、問題なく稼働することを確認してから、本番データで実行することをオススメします


■「HTML プリファレンス」の一括置換

また、あるデータエクステンションに格納されている複数の購読者の「HTML プリファレンス」をデフォルトの「HTML」から「TEXT」に一括で置換したり、「HTML」へ戻したりすることも可能です

この場合は「Status」の代わりに「EmailTypePreference」を使用します。

<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>

ちなみに、この「HTML プリファレンス」をテキスト側に切り替えると、以後、その購読者はマルチパート MIME としての送信時に「プレーンテキスト」版のメッセージのみを受信するようになります。

もし、「Status」と「HTML プリファレンス」を同時に更新したい場合は、以下のように設定します。(「アクティブ」かつ「HTML」にする場合。)

    var subscriber = {
        SubscriberKey: subscriberKey,
        Status: "Active", // 👈️ このカンマをお忘れなく!
        EmailTypePreference: "HTML" 
    };

全体通して更新がされない場合は、以下の 2 つが正しいか確認して下さい。
■ データエクステンションの「外部キー」
■ データエクステンション内の 購読者キーの「項目名」

今回は以上です。


Click here for English version

次の記事はこちら

前回の記事はこちら

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

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