Last active
January 12, 2023 15:05
-
-
Save jacksonpchen/d976d7086540754fea01aeeb27ba78a6 to your computer and use it in GitHub Desktop.
Marketing Cloud SSJS Run Automation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
[@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") {
if (Status == 6) {