Skip to content

Instantly share code, notes, and snippets.

@zuzannamj
Last active November 5, 2019 21:05
Show Gist options
  • Save zuzannamj/2ba025799432ee82d0971bc038e11d16 to your computer and use it in GitHub Desktop.
Save zuzannamj/2ba025799432ee82d0971bc038e11d16 to your computer and use it in GitHub Desktop.
<script runat="server">
Platform.Load("core","1.1");
try{
//Set time range of retrieved tracking data
var filter = {
Property: "EventDate",
SimpleOperator: "between",
Value: ["2016-01-01T00:00:00.000Z", "2017-01-01T00:00:00.000Z"]
};
//Set Data Extension properties
var fields = [
{ "Name" : "SendID", "FieldType" : "Number"},
{ "Name" : "SubscriberKey", "FieldType" : "Text", "MaxLength" : 50 },
{ "Name" : "EventDate", "FieldType" : "Date", "Ordinal" : 2 },
{ "Name" : "EventType", "FieldType" : "Text", "MaxLength" : 50 },
{ "Name" : "TriggeredSendDefinitionObjectID", "FieldType" : "Text", "MaxLength" : 50 },
{ "Name" : "BatchID", "FieldType" : "Number"},
{ "Name" : "ClientID", "FieldType" : "Number"}
]
var SentEventDE = {
"CustomerKey" : "01_SentEvent",
"Name" : "01_SentEvent",
"Fields" : fields
},
OpenEventDE = {
"CustomerKey" : "02_OpenEvent",
"Name" : "02_OpenEvent",
"Fields" : fields
},
ClickEventDE = {
"CustomerKey" : "03_ClickEvent",
"Name" : "03_ClickEvent",
"Fields" : fields
},
BounceEventDE = {
"CustomerKey" : "04_BounceEvent",
"Name" : "04_BounceEvent",
"Fields" : fields
},
UnsubEventDE = {
"CustomerKey" : "05_UnsubEvent",
"Name" : "05_UnsubEvent",
"Fields" : fields
};
//Create Data Extensions
var SentDE = DataExtension.Add(SentEventDE),
OpenDE = DataExtension.Add(OpenEventDE),
ClickDE = DataExtension.Add(ClickEventDE),
BounceDE = DataExtension.Add(BounceEventDE),
UnsubDE = DataExtension.Add(UnsubEventDE);
//Initiate WSProxy
var prox = new Script.Util.WSProxy();
//Set columns to retrieve
var cols = ["SendID","SubscriberKey","EventDate","EventType","TriggeredSendDefinitionObjectID","BatchID","Client.ID"];
//Initiate data extensions
var logSentData = DataExtension.Init("01_SentEvent"),
logOpenData = DataExtension.Init("02_OpenEvent"),
logClickData = DataExtension.Init("03_ClickEvent"),
logBounceData = DataExtension.Init("04_BounceEvent"),
logUnsubData = DataExtension.Init("05_UnsubEvent");
//Set a loop to iterate through the five objects
var objectType = ["SentEvent", "OpenEvent", "ClickEvent", "BounceEvent", "UnsubEvent"];
var j;
for (j = 0; j < 5; j++) {
var object = objectType[j],
moreData = true,
reqID = null,
numItems = 0;
//Retrieve data using pagination and insert data into respective Data Extensions
while(moreData) {
moreData = false;
var data = reqID == null ?
prox.retrieve(object, cols, filter):
prox.getNextBatch(object, reqID);
if(data != null) {
moreData = data.HasMoreRows;
reqID = data.RequestID;
if(data && data.Results) {
for(var i=0; i< data.Results.length; i++) {
var dataFields = [{SendID: data.Results[i].SendID, SubscriberKey: data.Results[i].SubscriberKey, EventDate: data.Results[i].EventDate, EventType: data.Results[i].EventType, TriggeredSendDefinitionObjectID: data.Results[i].TriggeredSendDefinitionObjectID, BatchID: data.Results[i].BatchID, ClientID: data.Results[i].Client.ID}];
if (object == "SentEvent") {
logSentData.Rows.Add(dataFields)
}
else if (object == "OpenEvent") {
logOpenData.Rows.Add(dataFields)
}
else if (object == "ClickEvent") {
logClickData.Rows.Add(dataFields)
}
else if (object == "BounceEvent") {
logBounceData.Rows.Add(dataFields)
}
else if (object == "UnsubEvent") {
logUnsubData.Rows.Add(dataFields)
};
numItems++;
}
}
}
Write("<br>" + numItems + " records inserted to " + object + " Data Extension.<br>");
}
}
}catch(e){
Write(Stringify(e));
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment