能否用SSJS基于已有数据过滤器创建并添加自动化筛选活动?
用SSJS实现基于已有数据过滤器创建筛选活动并添加到自动化流程
完全可以通过SSJS结合Marketing Cloud REST API实现这个需求,以下是具体实现步骤和代码示例:
核心思路
SSJS本身没有直接创建筛选活动的内置函数,但可以通过SSJS发起HTTP请求调用Marketing Cloud的REST API,完成筛选活动的创建以及与自动化流程的关联。
具体实现步骤
1. 获取Marketing Cloud OAuth认证令牌
在调用任何REST API之前,需要先获取有效的访问令牌:
var authEndpoint = 'https://YOUR_SUBDOMAIN.auth.marketingcloudapis.com/v2/token'; var payload = { "grant_type": "client_credentials", "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET", "account_id": "YOUR_ACCOUNT_ID" }; var req = new Script.Util.HttpRequest(authEndpoint); req.emptyContentHandling = 0; req.retries = 2; req.continueOnError = true; req.contentType = "application/json"; req.method = "POST"; req.postData = Stringify(payload); var resp = req.send(); var respObj = Platform.Function.ParseJSON(resp.content); var accessToken = respObj.access_token;
2. 创建筛选活动并关联已有数据过滤器
使用获取到的令牌,调用REST API创建筛选活动,指定关联的数据过滤器ID(即你已创建的数据过滤器的外部键或ID):
var filterActivityEndpoint = 'https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com/automation/v1/activities'; var filterPayload = { "name": "基于已有过滤器的筛选活动", "description": "通过SSJS创建的筛选活动", "activityDefinitionId": "7459e6a0-7f5a-4a9e-9875-7d4c3997d602", // 筛选活动的固定定义ID "configuration": { "dataFilterId": "YOUR_EXISTING_DATA_FILTER_ID" // 替换为你已创建的数据过滤器ID } }; var filterReq = new Script.Util.HttpRequest(filterActivityEndpoint); filterReq.emptyContentHandling = 0; filterReq.retries = 2; filterReq.continueOnError = true; filterReq.contentType = "application/json"; filterReq.method = "POST"; filterReq.setHeader("Authorization", "Bearer " + accessToken); filterReq.postData = Stringify(filterPayload); var filterResp = filterReq.send(); var filterActivityObj = Platform.Function.ParseJSON(filterResp.content); var filterActivityId = filterActivityObj.id; // 保存新创建的筛选活动ID
3. 将筛选活动添加到自动化流程
调用API将创建好的筛选活动添加到指定的自动化流程中,需要提前获取目标自动化流程的ID:
var automationEndpoint = 'https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com/automation/v1/automations/YOUR_AUTOMATION_ID/activities'; var addActivityPayload = { "id": filterActivityId, "step": 1 // 指定活动在自动化中的步骤位置 }; var addReq = new Script.Util.HttpRequest(automationEndpoint); addReq.emptyContentHandling = 0; addReq.retries = 2; addReq.continueOnError = true; addReq.contentType = "application/json"; addReq.method = "POST"; addReq.setHeader("Authorization", "Bearer " + accessToken); addReq.postData = Stringify(addActivityPayload); var addResp = addReq.send();
注意事项
- 替换代码中的
YOUR_SUBDOMAIN、YOUR_CLIENT_ID、YOUR_CLIENT_SECRET、YOUR_ACCOUNT_ID、YOUR_EXISTING_DATA_FILTER_ID、YOUR_AUTOMATION_ID为实际值 - 确保你的API集成拥有
Automation和Filter相关的权限 - 筛选活动的
activityDefinitionId是固定值7459e6a0-7f5a-4a9e-9875-7d4c3997d602,无需修改
内容的提问来源于stack exchange,提问作者Ilyass Ait Moussa
相关产品推荐
相关产品推荐

