Last active
November 10, 2024 00:17
-
-
Save MyCueCards/4c6327699b517775700533487d2c0ea4 to your computer and use it in GitHub Desktop.
In Salesforce Marketing Cloud Engagement (aka SFMC or MCE), run the below as a script activity in automation studio. The activity is meant to update file names within the data extract activity.
This file contains hidden or 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
/* ************************************************************************ | |
Unable to find specific documentation for the endpoint. Listing these references instead: | |
Supported Operations for Objects and Methods (SOAP API) | |
https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/supported_operations_for_objects_and_methods.html | |
DataExtractActivity (SOAP API Object) | |
https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/dataextractactivity.html | |
Create via WSProxy (giving similar endpoint, but for POST) | |
https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/ssjs_WSProxy_create.html?q=automation%2Fv1%2Fdataextracts#example-create-and-start-a-data-extract | |
Stack Exchange Reference | |
https://salesforce.stackexchange.com/questions/370272/unable-to-update-data-extract-activity-via-automation-v1-dataextracts-dataext | |
************************************************************************ */ | |
<script runat="server"> | |
Platform.Load("Core","1"); | |
var payload = { | |
"grant_type": "client_credentials", | |
"client_id": "XXXX", // found in Setup > Platform Tools > Apps > Installed Packages | |
"client_secret": "XXXX" // found in Setup > Platform Tools > Apps > Installed Packages | |
}; | |
var tenantSubdomain = "XXXX" // found in Setup > Platform Tools > Apps > Installed Packages | |
var authurl = "https://" + tenantSubdomain + ".auth.marketingcloudapis.com/v2/token"; | |
var result = HTTP.Post(authurl, 'application/json', Stringify(payload)); | |
if (result.StatusCode == 200) { | |
var responseJson = Platform.Function.ParseJSON(result.Response[0]); | |
var accessToken = responseJson.access_token; | |
var restUrl = responseJson.rest_instance_url; | |
Variable.SetValue("@accessTokenFinal", accessToken); | |
var accessTokenFinal = accessToken; | |
var dataExtractOneObjectId = "XXXX"; // found in url of the activity | |
var dataExtractOneTypeId = "XXXX"; // found in picklist within the activity | |
var dataExtractTwoObjectId = "XXXX"; // found in url of the activity | |
var dataExtractTwoTypeId = "XXXX"; // found in picklist within the activity | |
var fileTransferObjectId = "XXXX"; // found in url of the activity | |
var fileTransferLocationId = "XXXX"; // found in picklist within the activity | |
var setFileNameToday = Format(Now(), 'yyyyMMdd'); | |
var yesterday = new Date(); | |
yesterday.setDate(yesterday.getDate() - 1); | |
var setYesterday = yesterday.getFullYear() + ('0' + (yesterday.getMonth() + 1)).slice(-2) + ('0' + yesterday.getDate()).slice(-2); | |
var setZipFileNamePreviousDay = "statictext_" + setYesterday + ".zip"; | |
var setCsvFileName = "differentstatictext_" + setYesterday + "_" + setFileNameToday + ".csv"; | |
var restapi_url_dataextractactivityOne = "https://" + tenantSubdomain + ".rest.marketingcloudapis.com/automation/v1/dataextracts/" + dataExtractOneObjectId; | |
var restapi_payloadOne = "{\"dataExtractTypeId\": \"" + dataExtractOneTypeId + "\", \"intervalType\": 1, \"fileSpec\": \"" + setCsvFileName + "\"}"; | |
var headerNames = ["Authorization"]; | |
var s1="Bearer "; | |
var headerValues = "Bearer " + accessToken; | |
var reqdeaOne = new Script.Util.HttpRequest(restapi_url_dataextractactivityOne); | |
reqdeaOne.contentType = "application/json" | |
reqdeaOne.setHeader("Authorization", headerValues); | |
reqdeaOne.method = "PATCH"; | |
reqdeaOne.postData = restapi_payloadOne; | |
var restapi_result = reqdeaOne.send(); | |
var restapi_url_dataextractactivityTwo = "https://" + tenantSubdomain + ".rest.marketingcloudapis.com/automation/v1/dataextracts/" + dataExtractTwoObjectId; | |
var restapi_payloadTwo = "{\"dataExtractTypeId\": \"" + dataExtractTwoTypeId + "\", \"intervalType\": 0, \"fileSpec\": \"" + setZipFileNamePreviousDay + "\", \"dataFields\": [{\"name\": \"ArchiveFolder\", \"type\": \"string\", \"value\": \"\"}, {\"name\": \"DeleteFiles\", \"type\": \"bool\", \"value\": \"False\"}, {\"name\": \"FileFilter\", \"type\": \"string\", \"value\": \"" + setCsvFileName + "\"}, {\"name\": \"ImportFolder\", \"type\": \"string\", \"value\": \"Import\"}, {\"name\": \"OutputFolder\", \"type\": \"string\", \"value\": \"Import\"}]}"; | |
var headerNames = ["Authorization"]; | |
var s1="Bearer "; | |
var headerValues = "Bearer " + accessToken; | |
var reqdeaTwo = new Script.Util.HttpRequest(restapi_url_dataextractactivityTwo); | |
reqdeaTwo.contentType = "application/json" | |
reqdeaTwo.setHeader("Authorization", headerValues); | |
reqdeaTwo.method = "PATCH"; | |
reqdeaTwo.postData = restapi_payloadTwo; | |
var restapi_result = reqdeaTwo.send(); | |
var restapi_url_filetransfer = "https://" + tenantSubdomain + ".rest.marketingcloudapis.com/automation/v1/filetransfers/" + fileTransferObjectId; | |
var restapi_payload = '{"id": "' + fileTransferObjectId + '", "fileTransferLocationId": "' + fileTransferLocationId + '", "fileSpec": "' + setZipFileNamePreviousDay + '"}'; | |
var headerNames = ["Authorization"]; | |
var s1="Bearer "; | |
var headerValues = "Bearer " + accessToken; | |
var reqft = new Script.Util.HttpRequest(restapi_url_filetransfer); | |
reqft.contentType = "application/json" | |
reqft.setHeader("Authorization", headerValues); | |
reqft.method = "PATCH"; | |
reqft.postData = restapi_payload; | |
var restapi_result = reqft.send(); | |
} else { | |
throw new Error("Error: No access token."); | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment