Skip to content

Instantly share code, notes, and snippets.

@wvpv
Created June 13, 2025 00:19
Show Gist options
  • Save wvpv/7e927e20075b6d0e0e570926af2781e8 to your computer and use it in GitHub Desktop.
Save wvpv/7e927e20075b6d0e0e570926af2781e8 to your computer and use it in GitHub Desktop.
DataTable AJAX Example - Handler
<script runat="server" language="javascript">
Platform.Load("core","1");
Platform.Response.SetResponseHeader("Connect","Keep-Alive");
Platform.Response.SetResponseHeader("Keep-Alive","timeout=40, max=200");
var page = Request.GetQueryStringParameter("page");
page = page ? page : 1;
var pageSize = Request.GetQueryStringParameter("pageSize");
pageSize = pageSize ? pageSize : 20;
var results = {};
results.error = {}
var sourceDEName = "YOURDENAMEHERE";
var sourceDEKey = "YOURDEKEYHERE";
// get rowcount via AMPscript function
var rowCount = Platform.Function.TreatAsContent("%"+"%"+"=DataExtensionRowCount"+"(\""+sourceDEName+"\")="+"%"+"%");
results.recordsTotal = rowCount
results.recordsFiltered = rowCount
results.data = []
// API CONFIGURATION
var clientId = "YOURCLIENTIDHERE";
var clientSecret = "YOURSECRETHERE";
var tenant = "YOURTENANTHERE";
var mid = Platform.Function.AuthenticatedMemberID();
var authURL = "https://" + tenant + ".auth.marketingcloudapis.com/v2/token";
var endPoint = "https://" + tenant + ".rest.marketingcloudapis.com/";
var objectType = "DataExtensionObject[" + sourceDEKey + "]";
var cols = ["SubscriberKey", "EmailAddress", "FirstName", "LastName"];
var filter = [];
var opts = { BatchSize: pageSize };
var props = {};
// authenticate
var accessToken = ""
var result0;
var result;
try {
accessToken = getAccessToken(clientId, clientSecret, mid, authURL);
var url = endPoint + "data/v1/customobjectdata/key/" + sourceDEKey + "/rowset?$pageSize=" + pageSize + "&$page=" + page;
var headerNames = ["Authorization"];
var headerValues = ["Bearer " + accessToken];
result0 = HTTP.Get(url, headerNames, headerValues);
result = Platform.Function.ParseJSON(result0.Content);
} catch (e) {
results.error = Stringify(e)
}
for (var i = 0; i < result.items.length; i++) {
var row = {}
row.SubscriberKey = result.items[i].keys.subscriberkey
row.EmailAddress = result.items[i].values.emailaddress
row.FirstName = result.items[i].values.firstname
row.LastName = result.items[i].values.lastname
results.data.push(row)
}
function getAccessToken(clientId, clientSecret, mid, authURL) {
var accessToken = "";
if (clientId != "" && clientSecret != "" && mid != "" && authURL !="") {
var payload = {
"grant_type": "client_credentials",
"client_id": clientId,
"client_secret": clientSecret,
"account_id": mid
};
var contentType = "application/json";
var result = HTTP.Post(authURL, contentType, Stringify(payload), null, null);
accessToken = Platform.Function.ParseJSON(result["Response"][0]).access_token;
}
return accessToken
}
Write(Stringify(results));
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment