Skip to content

Instantly share code, notes, and snippets.

@jacksonpchen
Last active January 12, 2023 15:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jacksonpchen/d976d7086540754fea01aeeb27ba78a6 to your computer and use it in GitHub Desktop.
Save jacksonpchen/d976d7086540754fea01aeeb27ba78a6 to your computer and use it in GitHub Desktop.
Marketing Cloud SSJS Run Automation
/*
AMPscript.com
https://ampscript.com/how-to-run-automations-more-frequently-using-ssjs/
*/
<script runat="server">
Platform.Load("Core","1.1.1");
var automationCustomerKey = "[Customer Key Goes Here]"
var rr = Platform.Function.CreateObject("RetrieveRequest");
Platform.Function.SetObjectProperty(rr, "ObjectType", "Automation");
Platform.Function.AddObjectArrayItem(rr, "Properties", "ProgramID");
Platform.Function.AddObjectArrayItem(rr, "Properties", "CustomerKey");
Platform.Function.AddObjectArrayItem(rr, "Properties", "Status");
var sfp = Platform.Function.CreateObject("SimpleFilterPart");
Platform.Function.SetObjectProperty(sfp, "Property", "CustomerKey");
Platform.Function.SetObjectProperty(sfp, "SimpleOperator", "equals");
Platform.Function.AddObjectArrayItem(sfp, "Value", automationCustomerKey);
Platform.Function.SetObjectProperty(rr, "Filter", sfp);
var retrieveStatus = [0,0,0];
var automationResultSet = Platform.Function.InvokeRetrieve(rr, retrieveStatus);
var ObjectID = automationResultSet[0]["ObjectID"];
var Status = automationResultSet[0]["Status"];
if (ObjectID != "null") {
/*
Code Status
-1 Error
0 BuildingError
1 Building
2 Ready
3 Running
4 Paused
5 Stopped
6 Scheduled
7 Awaiting Trigger
8 InactiveTrigger
*/
if (Status == 2) {
var obj = Platform.Function.CreateObject("Automation");
Platform.Function.SetObjectProperty(obj, "ObjectID", ObjectID);
var po = Platform.Function.CreateObject("PerformOptions");
var performResult = [0,0,0];
var performStatus = Platform.Function.InvokePerform(obj, "start", performResult, po);
} else {
// already running
}
} else {
// automation not found
}
</script>
@Raghuramg92
Copy link

Raghuramg92 commented Jan 19, 2021

[@Merlino, @fib-at-isobar nad @Romeroc3

Please change the status value based on your automation. In provided code status is 2 and in my code status is 6 likewise.
If you guys want to start an automation using SSJS, In backend(in SFMC org) you have to "create and activate" automation with required activities and then giving automation key in SSJS code(var automationCustomerKey = "e40XXX45-XXXX-XXXX-XXXX-Xde48faXX") from cloud page you can run

Below code may give idea to retrieve status

`<script runat="server">
Platform.Load("Core","1.1.1");
var automationCustomerKey = "XXXXXXXXXXXXXXXXXXXXXXXX"
var rr = Platform.Function.CreateObject("RetrieveRequest");
Platform.Function.SetObjectProperty(rr, "ObjectType", "Automation");
Platform.Function.AddObjectArrayItem(rr, "Properties", "ProgramID");
Platform.Function.AddObjectArrayItem(rr, "Properties", "CustomerKey");
Platform.Function.AddObjectArrayItem(rr, "Properties", "Status");

var sfp = Platform.Function.CreateObject("SimpleFilterPart");
Platform.Function.SetObjectProperty(sfp, "Property", "CustomerKey");
Platform.Function.SetObjectProperty(sfp, "SimpleOperator", "equals");
Platform.Function.AddObjectArrayItem(sfp, "Value", automationCustomerKey);

Platform.Function.SetObjectProperty(rr, "Filter", sfp);

var retrieveStatus = [0,0,0];

var automationResultSet = Platform.Function.InvokeRetrieve(rr, retrieveStatus);

var ObjectID = automationResultSet[0]["ObjectID"];

var Status = automationResultSet[0]["Status"];

if (ObjectID != "null") {

/*
    Code Status
        -1   Error
             0   BuildingError
                  1   Building
                       2   Ready
                            3   Running
                                 4   Paused
                                      5   Stopped
                                           6   Scheduled
                                                7   Awaiting Trigger
                                                     8   _InactiveTrigger_
                                                         */

if (Status == 6) {

    var obj = Platform.Function.CreateObject("Automation");
    Platform.Function.SetObjectProperty(obj, "ObjectID", ObjectID);
    var po = Platform.Function.CreateObject("PerformOptions");
    
    var performResult = [0,0,0];
    var performStatus = Platform.Function.InvokePerform(obj, "start", performResult, po);
    Write(Stringify(performStatus));
        } else {
            Write("Error")
            
              }
              } 
              </script>](url)`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment