How can I create a ComplexFilterPart using SSJS / API in Marketing Cloud?

I am creating a Landing Page in Marketing Cloud and would like to use the API to query an Object and filter by a specific property, returning only relevant results.

How can I do this?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Use the following code to start your API call. This example uses a EmailSendDefinition Object and a few properties. Refer here Marketing Cloud Technical Library for more information on the properties available. Make sure to include the Property that you need to filter by (in this case, “ModifiedDate”)

<script runat="server">
    Platform.Load("Core", "1.1.1");

var rr = Platform.Function.CreateObject("RetrieveRequest");
        Platform.Function.SetObjectProperty(rr, "ObjectType", "EmailSendDefinition");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "CustomerKey");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "Name");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "EmailSubject")
        Platform.Function.AddObjectArrayItem(rr, "Properties", "SendDefinitionList");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "DeliveryProfile.CustomerKey");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "SenderProfile.CustomerKey");;
        Platform.Function.AddObjectArrayItem(rr, "Properties", "IsMultipart");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "CategoryID");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "CreatedDate");
        Platform.Function.AddObjectArrayItem(rr, "Properties", "ModifiedDate");

Then use this code to create the ComplexFilterPart (which consists of two SimpleFilterParts)

        //"From" date
        var sfp1 = Platform.Function.CreateObject("SimpleFilterPart");
        Platform.Function.SetObjectProperty(sfp1, "Property", "ModifiedDate");
        Platform.Function.SetObjectProperty(sfp1, "SimpleOperator", "greaterThanOrEqual");
        Platform.Function.AddObjectArrayItem(sfp1, "Value", "2015-08-27T00:00:00.000");

        //"To" date
        var sfp2 = Platform.Function.CreateObject("SimpleFilterPart");
        Platform.Function.SetObjectProperty(sfp2, "Property", "ModifiedDate");
        Platform.Function.SetObjectProperty(sfp2, "SimpleOperator", "lessThanOrEqual");
        Platform.Function.AddObjectArrayItem(sfp2, "Value", "2015-08-28T00:00:00.000");


        //Adding two Simple filters together to create a Complex filter
        var cfp = Platform.Function.CreateObject("ComplexFilterPart");
        Platform.Function.SetObjectProperty(cfp, "LeftOperand", sfp1);
        Platform.Function.SetObjectProperty(cfp, "LogicalOperator", "AND");     
        Platform.Function.SetObjectProperty(cfp, "RightOperand", sfp2);

        //Add the Complex filter to the RetrieveRequest
        Platform.Function.SetObjectProperty(rr, "Filter", cfp);

Now perform the retrieve:

        var retrieveStatus = [0, 0, 0];
        var retrieveResult = Platform.Function.InvokeRetrieve(rr, retrieveStatus);

        Write(Stringify(retrieveResult));

</script>

This returns a JSON object of all EmailSendDefinition Objects (User Initiated Sends) with a ModifiedDate between 27 August 2015 and 28 August 2015.

For more information on the operators available, refer here: Marketing Cloud Simple Operators


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x