
【第155回】 データエクステンションや自動連絡禁止リストからのレコードの削除方法
Salesforce Marketing Cloud において、データエクステンションから一部のレコードを部分的に削除したい場合は、どのように対処すべきでしょうか?
例えば、データエクステンションに格納されているレコードを一度すべてエクスポートして、該当のレコードだけを削除して、再度インポートし直すという方法もあるかと思います。
但し、セキュリティ上、個人情報が含まれるデータのため、ローカル環境にエクスポートできない場合や、自動連絡禁止リストのようにそもそもエクスポートができない場合もあります。
このような場合は、Automation Studio のスクリプトアクティビティを用いて、データエクステンションから部分的にレコードを削除することを検討できます。
以下で、単数レコードを削除する場合と、複数レコードを削除する場合に分けて検討してみましょう。
■ 単数レコードの削除
レコードの削除を実行するには、以下の DeleteData という関数を使用します。
以下のスクリプトに「データエクステンション名」「項目名」「値」を記載して、Automation Studio でスクリプトアクティビティを 1 回実行してください。
<script runat="server">
var rows = Platform.Function.DeleteData('データエクステンション名',['項目名'],['値']);
</script>
・「データエクステンション名」「項目名」「値」は、日本語でも問題ありません。また、大文字・小文字も区別しません。
・ 1 回の呼び出しに複数の「項目名」と「値」のペアを含めることができますが、仮に単数であっても [ ] は削除しないで下さい。
ちなみに、自動連絡禁止リストはデータエクステンションの扱いのため、上記のスクリプトで処理が可能です。自動連絡禁止リストは、購読者キー管理では無く、メールアドレス管理になっています。メールアドレスを指定する際は、以下のような形になります。
<script runat="server">
var rows = Platform.Function.DeleteData('自動連絡禁止リスト名',['Email Address'],['xxx@gmail.com']);
</script>
・ Email と Address の間にスペースを設けてください。
■ 複数レコードの一括削除
それでは、複数のレコードをまとめて消したい場合はどうすれば良いでしょうか?
このような場合は、削除用のブール値の項目を設けて、削除対象のレコードに「True」を持たせ、その項目が「True」の場合に削除するという方法を採用することができます。
まず、以下のようなデータエクステンションがあるとして、削除のために「DeleteFlag」のようなブーリアンの項目を設けます。

ここで「奇数の ID」のものだけを削除する目的で、フラグを更新するためのインポート用の CSV を用意して、先ほどのデータエクステンションにインポートしましょう。

下記の通り、インポートが完了しました。

こちらのデータエクステンション(「DeleteExtension」)に対して、以下のようなスクリプトを実行します。
<script runat="server">
var rows = Platform.Function.DeleteData('DeleteExtension',['DeleteFlag'],['True']);
</script>
すると、データエクステンションの中身から、奇数の ID であるものが削除されましたね。成功です。

ちなみに、自動連絡禁止リストに対しても「フィールドの追加」は可能です。まず、上記と同様にブーリアンの項目を追加してください。(その際、デフォルトで「False」の値を持たせても良いと思います。)

その後、Automation Studio のインポートアクティビティで Email Address をキーにして、True の値をインポートします。これにより上記と同じ方法で削除が可能です。
インポートの際は、Email Address の他、Date Added も必須項目になっていますので、インポート用の CSV を作成する時は注意してください。


<script runat="server">
var rows = Platform.Function.DeleteData('自動連絡禁止リスト名',['Flag'],['True']);
</script>
いかがでしたでしょうか。
この方法を知ることで、より一層、データエクステンション内のレコードを柔軟にコントロールすることができるようになりましたね。是非活用してみてください。
今回は以上です。
Click here for English version
次の記事はこちら
前回の記事はこちら
私の note のトップページはこちら