Platform.Load
(used to load the core library) is case sensitive. You will need to use Platform.Load
instead of platform.load
.
Also, I would recommend removing the comma after the Field 3 object in your array. It will work if you include it, but it's not strictly valid.
The following code works. However, note that the script will fail if a DE already exists with the same name and external key.
<script runat="server">
Platform.Load("core","1.1");
var deObj = {
"CustomerKey" : "demoDE",
"Name" : "My Demo DE",
"Fields" : [
{ "Name" : "Field 1", "FieldType" : "Number", "IsPrimaryKey" : true, "IsRequired" : true },
{ "Name" : "Field 2", "FieldType" : "Text", "MaxLength" : 50 },
{ "Name" : "Field 3", "FieldType" : "Date", "Ordinal" : 2 }
]
};
var myDE = DataExtension.Add(deObj);
</script>
If you don't mind using an undocumented REST endpoint, you could use the /automation/v1/automations/{{objID}}
endpoint.
GET /automation/v1/automations/{{yourAutoObjId}}
Host: {{subdomain}}.rest.marketingcloudapis.com
Authorization: Bearer {{authToken}}
Content-Type: application/json
This will return all the steps/activities inside the automation including ID, objectTypeId and Name.
The objectTypeID will relate to your 'PartnerAPIObjectID' values. From there you can use the corresponding REST endpoints or SOAP objects to gather the content of each step.
Example Response:
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "my_Automation",
"description": "",
"key": "XXXXXXXXXXXXXXXXXXXXXXX",
"typeId": 1,
"type": "scheduled",
"statusId": 2,
"status": "Ready",
"categoryId": XXXXX,
"lastRunTime": "2019-10-21T14:57:00.58",
"lastRunInstanceId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"schedule": {
"scheduleStatus": "none"
},
"steps": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "",
"step": 1,
"activities": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "Salesforce Send",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 771,
"displayOrder": 1
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXX",
"name": "Query Activity",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 300,
"displayOrder": 2
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "Refresh Group",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 45,
"displayOrder": 3
}
]
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "",
"step": 2,
"activities": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "Data Extract",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 73,
"displayOrder": 1
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "File Transfer",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 53,
"displayOrder": 2
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "Data Factory Utility",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 425,
"displayOrder": 3
}
]
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "",
"step": 3,
"activities": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXX",
"name": "Filter Activity",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 303,
"displayOrder": 1,
"targetDataExtensions": [
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "DEName",
"key": "DEKey",
"description": "",
"rowCount": 3
}
]
},
{
"id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"name": "Fire Event",
"activityObjectId": "XXXXXXXXXXXXXXXXXXXXXXX",
"objectTypeId": 749,
"displayOrder": 2
}
]
}
]
}
Here is my list of ObjectTypeIds:
Salesforce Send
"objectTypeId": 771
Query Activity
"objectTypeId": 300
Data Extract
"objectTypeId": 73
File Transfer
"objectTypeId": 53
Filter Activity
"objectTypeId": 303
Fire Event
"objectTypeId": 749
Import File
"objectTypeId": 43
Script Activity
"objectTypeId": 423
Guided Send
"objectTypeId": 42
Wait Activity
"objectTypeId": 467
Verification Activity
"objectTypeId": 1000
Refresh Group
"objectTypeId": 45
Data Factory Utility
"objectTypeId": 425
Send SMS
"objectTypeId": 725
Import Mobile Contacts
"objectTypeId": 726
Refresh Mobile Filtered List
"objectTypeId": 724
Send GroupConnect
"objectTypeId": 783
Report Definition
"objectTypeId": 84
Send Push
"objectTypeId": 736
Best Answer
FilterActivity objects don't have an exposed
CategoryID
property, so you can't move them. It does seem like they do in older accounts -- since the Filter Activities are still listed under Interactions in Email Studio.One little trick for finding retrievable SOAP properties -- find your BU's tenant ID, and browse to the WSDL URL and hit CTRL-E to view the source of the page. Search for the object and review the
IsRetrievable
properties.