Automated way to run any Automation in marketing Cloud?
<script runat="server">
Platform.Load("Core", "1");
try {
var automationCustomerKey = "[Customer Key Goes Here]";
// Function to retrieve access token
function getAccessToken() {
var tokenUrl = 'https://12234.auth.marketingcloudapis.com/v2/token';
var contentType = 'application/json';
var tokenPayload = {
"grant_type": "client_credentials",
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"account_id": "your_account_id"
};
var tokenResponse = HTTP.Post(tokenUrl, contentType, Stringify(tokenPayload));
var tokenStatusCode = tokenResponse.StatusCode;
var tokenObj = Platform.Function.ParseJSON(tokenResponse.Response + '');
if (tokenStatusCode === 200 && tokenObj && tokenObj.access_token) {
return tokenObj.access_token;
} else {
throw "Failed to obtain access token.";
}
}
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);
if (automationResultSet && automationResultSet.length > 0) {
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 accessToken = getAccessToken();
var authorizationHeader = 'Bearer ' + accessToken;
var content = [0];
var postResponse = Platform.Function.HTTPPost(
'https://{Subdomain}.rest.marketingcloudapis.com/automation/v1/automations/key:{Automation External key}/actions/runallonce',
'application/json',
'',
['Authorization'],
[authorizationHeader],
content
);
Platform.Response.Write(content[0]);
} else {
// Automation is already running
}
} else {
// Automation not found
}
} else {
// No automation result found
}
} catch (ex) {
Platform.Response.Write("Error message: " + ex);
}
</script>