verified
Retrieve Automation historyLearn how to retrieve an Automation's history in Salesforce Marketing Cloud (SFMC) with SSJS (server-side JavaScript). Code snippets include the WSProxy method.
WSProxy
var api = new Script.Util.WSProxy();
var customerKey = "S0M3-GU1D-K3Y-G03SR1G4T-H3R3";
var cols = [
"Status",
"Name",
"CustomerKey",
"CompletedTime",
"StartTime"
];
var filter = {
Property: "CustomerKey",
SimpleOperator: "equals",
Value: customerKey
};
var records = [],
moreData = true,
reqID = data = null;
while (moreData) {
moreData = false;
if (reqID == null) {
data = api.retrieve("AutomationInstance", cols, filter);
} else {
data = api.getNextBatch("AutomationInstance", reqID);
}
if (data != null) {
moreData = data.HasMoreRows;
reqID = data.RequestID;
for (var k in data.Results) {
var item = data.Results[k];
var o = {
Status: item.Status,
StatusMessage: item.StatusMessage,
StartTime: DateTime.SystemDateToLocalDate(item.StartTime),
CompletedTime: DateTime.SystemDateToLocalDate(item.CompletedTime)
}
records.push(o);
}
}
}
records.sort(function (a, b) { return (new Date(a.CompletedTime) < new Date(b.CompletedTime)) ? 1 : -1 });
var result = records;
<script runat="server">
Platform.Load("Core","1");
var api = new Script.Util.WSProxy();
try {
var customerKey = "S0M3-GU1D-K3Y-G03SR1G4T-H3R3";
var result = retrieveAutomationHistory(customerKey);
Write(Stringify(result));
} catch(error) {
Write(Stringify(error));
}
function retrieveAutomationHistory(key, limit) {
var limit = limit || null;
var cols = [
"Status",
"Name",
"CustomerKey",
"CompletedTime",
"StartTime"
];
var filter = {
Property: "CustomerKey",
SimpleOperator: "equals",
Value: key
};
var records = [],
moreData = true,
reqID = data = null;
while (moreData) {
moreData = false;
if (reqID == null) {
data = api.retrieve("AutomationInstance", cols, filter);
} else {
data = api.getNextBatch("AutomationInstance", reqID);
}
if (data != null) {
moreData = data.HasMoreRows;
reqID = data.RequestID;
for (var k in data.Results) {
var item = data.Results[k];
var o = {
Status: item.Status,
StatusMessage: item.StatusMessage,
StartTime: DateTime.SystemDateToLocalDate(item.StartTime),
CompletedTime: DateTime.SystemDateToLocalDate(item.CompletedTime)
}
records.push(o);
}
}
}
records.sort(function (a, b) { return (new Date(a.CompletedTime) < new Date(b.CompletedTime)) ? 1 : -1 });
var num = (limit != null && limit <= records.length) ? limit : records.length;
return records.slice(0, num);
}
</script>
[
{
"Status": 1,
"StatusMessage": "Complete",
"StartTime": "2022-10-25T16:01:55.383",
"CompletedTime": "2022-10-25T16:03:35.543"
},
{
"Status": 1,
"StatusMessage": "Complete",
"StartTime": "2022-10-25T15:00:49.807",
"CompletedTime": "2022-10-25T15:01:36.807"
},
{
"Status": 1,
"StatusMessage": "Complete",
"StartTime": "2022-10-25T14:05:13.247",
"CompletedTime": "2022-10-25T14:09:04.656"
}
]
WARNING
The Automation needs to be scheduled in order to retrieve its activity's history.
Reference
Ressources and references related to the current methods.
Official documentation
SOAP object
Help me turn coffee into code
This website is provided to you free of charge. However, a lot of time and effort are spent to write, test and mainain the code. Please consider supporting my work by buying me a cup of coffee.