Retrieve Script Activity history verified

Learn how to retrieve a Script Activity'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 = [
    "Name",
    "CustomerKey",
    "StatusMessage",
    "Status",
    "CreatedDate",
    "ModifiedDate",
    "StatusLastUpdate"
];

var filter = {
    Property: "CustomerKey",
    SimpleOperator: "equals",
    Value: customerKey
};

var opts = {
    BatchSize: 300
};

var props = {
    QueryAllAccounts: false
};

var result = [],
    moreData = true,
    reqID = data = null;

while (moreData) {

    moreData = false;

    if(reqID) props.ContinueRequest = reqID;

    var data = api.retrieve("ActivityInstance", cols, filter, opts, props);

    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,
                StatusLastUpdate: DateTime.SystemDateToLocalDate(item.StatusLastUpdate)
            }

            result.push(o);
        }

    }
}

result.sort(function (a, b) { 
    return (new Date(a.StatusLastUpdate) < new Date(b.StatusLastUpdate)) ? 1 : -1 
});
<script runat="server">

    Platform.Load("Core","1");

    var api = new Script.Util.WSProxy();

    try {

        var name = "MyAutomation";

        var request = api.retrieve("Automation", ["ProgramID"], {
            Property: "Name",
            SimpleOperator: "equals",
            Value: name
        });

        var objId = request.Results[0].ObjectID;

        var cols = [
            "CustomerKey",
            "Name",
            "Description",
            "ObjectID",
            "IsActive",
            "CreatedDate",
            "ModifiedDate",
            "Definition",
            "Sequence"
        ];

        var filter = {
            Property: "Program.ObjectID",
            SimpleOperator: "equals",
            Value: objId
        };

        var request = api.retrieve("Activity", cols, filter);

        var activities = request.Results;

        var result = [];

        for(var k in activities) {

            var item = activities[k];

            var o = {
                Name: item.Name,
                Sequence: item.Sequence,
                Statuses: retrieveActivityHistory(item.CustomerKey)
            }

            result.push(o);

        }

        result.sort(function (a, b) { 
            return (new Date(a.Statuses[0].StatusLastUpdate) > new Date(b.Statuses[0].StatusLastUpdate)) ? 1 : -1 
        });

        Write(Stringify(result));

    } catch(err) {

        Write(Stringify(err));

    }

    function retrieveActivityHistory(key, limit) {

        var limit = limit || null;

        var cols = [
            "Name",
            "CustomerKey",
            "StatusMessage",
            "Status",
            "CreatedDate",
            "ModifiedDate",
            "StatusLastUpdate"
        ];

        var filter = {
            Property: "CustomerKey",
            SimpleOperator: "equals",
            Value: key
        };

        var opts = {
            BatchSize: 300
        };

        var props = {
            QueryAllAccounts: false
        };

        var records = [],
            moreData = true,
            reqID = data = null;
    
        while (moreData) {

            moreData = false;

            if(reqID) props.ContinueRequest = reqID;

            var data = api.retrieve("ActivityInstance", cols, filter, opts, props);

            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,
                        StatusLastUpdate: DateTime.SystemDateToLocalDate(item.StatusLastUpdate)
                    }

                    records.push(o);
                }

            }
        }
    
        records.sort(function (a, b) { return (new Date(a.StatusLastUpdate) < new Date(b.StatusLastUpdate)) ? 1 : -1 });

        var num = (limit != null && limit <= records.length) ? limit : records.length;
    
        return records.slice(0, num);
    
    }

</script>
[
  {
    "Name": "MyAutomationActivity",
    "Sequence": 0,
    "Statuses": [
      {
        "Status": 1,
        "StatusMessage": "Complete",
        "StatusLastUpdate": "2022-10-12T22:04:19.616"
      },
      {
        "Status": 1,
        "StatusMessage": "Complete",
        "StatusLastUpdate": "2022-10-12T21:04:22.903"
      },
      {
        "Status": 1,
        "StatusMessage": "Complete",
        "StatusLastUpdate": "2022-10-12T20:03:54.773"
      }
    ]
  }
]

WARNING

Activity history can only be retrieved from an active Automation. CustomerKey in the snippet refers to the key of the Activity run within the Automation and not to the actual Activity that can be found in the Automation Studio.


Last Updated: