【第229回】 Extract Not Sent を自動化してデータエクステンションに格納する
以前の記事では、Automation Studio の「Extract Not Sent」機能を使用して、Salesforce Marketing Cloud でメール送信ができなかった購読者の情報を取得し、メール送信ができなかった理由を確認する方法を紹介しました。
そこで今回はそのプロセスをさらに進めて、日次でデータを自動的にデータエクステンションに格納する方法について説明したいと思います。
事前にデータエクステンションに格納しておくことで、90 日間を超えてメール送信ができなかったデータを扱えたり、SQL を用いて素早くデータにアクセスし、トラブルシューティングすることが可能になります。
一度設定すれば、あとは自動的に蓄積されていきますので、是非取り組んでみて下さい。
格納用データエクステンションの作成
まずは、格納用のデータエクステンションを作成します。以下の項目を用意して下さい。
ClientID : Text(50)プライマリーキー
SendID : Text(50)プライマリーキー
SubscriberKey : Text(255)プライマリーキー
EmailAddress : Text(255)プライマリーキー
SubscriberID : Text(50)プライマリーキー
ListID : Text(50)プライマリーキー
EventDate : Date プライマリーキー
EventType : Text(50)プライマリーキー
BatchID : Text(50)プライマリーキー
TriggeredSendExternalKey : Text(50) ※NULL を許可
Reason : Text(50)プライマリーキー
以下のスクリプトを、スクリプトアクティビティで実行しても OK です。データエクステンションのトップフォルダに「NotSent」というデータエクステンションが作成されます。フォルダを移動して使用してください。
<script runat="server">
Platform.Load("Core", "1");
var dataExtensionConfig = {
"CustomerKey": "",
"Name": "NotSent",
"Fields": [
{ "Name" : "ClientID", "FieldType" : "Text", "MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "SendID", "FieldType" : "Text", "MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "SubscriberKey", "FieldType" : "Text", "MaxLength" : 255, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "EmailAddress", "FieldType" : "Text", "MaxLength" : 255, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "SubscriberID", "FieldType" : "Text", "MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "ListID", "FieldType" : "Text", "MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "EventDate", "FieldType" : "Date", "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "EventType", "FieldType" : "Text", "MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "BatchID", "FieldType" : "Text", "MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "TriggeredSendExternalKey", "FieldType" : "Text", "MaxLength" : 50, "IsRequired" : false },
{ "Name" : "Reason", "FieldType" : "Text", "MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true }
]
};
var createdDataExtension = DataExtension.Add(dataExtensionConfig);
</script>
このデータエクステンションは、以下の技術で作成されます。
Automation Studio の設定
続いて、Automation Studio の Extract Not Sent を実装します。
1. 新規のオートメーションを立ち上げます。
2. オートメーションのステップ 1 に、データ抽出アクティビティをドラッグアンドドロップします。
3. 新規でデータ抽出アクティビティを構成します。
4. ファイルの命名パターンは「*.zip」とする必要があります。* の部分を適当に命名した後、ZIP の拡張子をつけてください。
抽出タイプは「Tracking Extract」を選択してください。もし、この時点で「Tracking Extract」が表示されない方は、テクニカルサポートに依頼してこの機能の有効化をしてください。
5. 次に条件を設定します。
取得期間は、最大で 直近 90 日間分 のデータが取得できます。タイムゾーンは JST(GMT +09:00)に変更することで EventDate が日本時間で取得されるようになります。タイムゾーンを設定しない場合は、15 時間前の時間で取得されます。最後に「抽出の種別」として、右側のチェックボックスの中から「Extract Not Sent」にチェックを入れます。
6. 続いて、オートメーションのステップ 2 に、ファイル転送アクティビティをドラッグアンドドロップします。
7. こちらでは「Safehouse からファイルの移動」を選択します。
8. ここでのファイルの命名パターンは、先ほどデータ抽出アクティビティで命名した名前と同じである必要があります。同じ名前を入力してください。また、こちらでも ZIP の拡張子を追加することを忘れずにお願いします。
デスティネーションは ZIP ファイルが格納される FTP のディレクトリを選択してください。後にデータエクステンションにインポートをすることになりますので、インポートディレクトリを選択します。
9. これで FTPのインポートディレクトリに「NotSent.zip」というファイルが格納されるようになりました。次に、この ZIP ファイルを解凍したいと思います。オートメーションのステップ 3 に、ファイル転送アクティビティをドラッグアンドドロップします。
10. ZIP ファイルの解凍の際は、「ファイルの管理」を選択します。
11. 「ファイルの管理」では、以下のように構成します。
12. これで、このファイル転送アクティビティを実行すると、FTP の Import ディレクトリに「NotSent.csv」というファイルが配置されます。
13. 最後に、オートメーションのステップ 4 に、データコピーまたはインポートアクティビティをドラッグアンドドロップして、FTP に配置された「NotSent.csv」を先ほど作成した格納用データエクステンションにインポートしたいと思います。
14. データアクションは「追加と更新」を選択します。マッピングに関しては、格納用データエクステンションの項目とヘッダー行でマッピングをしてください。
15. これで、各アクティビティの設定は完了です。続いて、スケジュールを配置して、日次で自動化する設定を行います。
16. スケジュールを構成し、アクティブ化しますと、すべて完了です。
17. 試しに「一回実行」することで、データエクステンションにデータが格納されたことも確認できましたね。
成功です。
Extract Not Sent リストの注意点
Extract Not Sent リストの注意点をまとめます。参考にしてください。
メールを送信できなかった理由
最後に、こちらの「Extract Not Sent」で取得できる「メールが送信できなかった理由」の代表的なものを記載しておきます。参考にしてください。
これ以外のメールが送信されない理由が掲載されている場合は、下記ヘルプドキュメントよりご確認ください。
今回は以上です。