Created
December 25, 2021 22:33
-
-
Save naveenvm93/5a8b381d440241514f4c2e94214bf220 to your computer and use it in GitHub Desktop.
This file contains 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
<script runat = "server" > | |
Platform.Load("core", "1.1.1"); | |
try { | |
var config = { | |
name: "Bitly_Link_Tracking", | |
cols: ["ShortURL"], | |
filter: { | |
Property: "Tracked", | |
SimpleOperator: "isNull", | |
Value: " " | |
} | |
} | |
var records = retrieveRecords(config); | |
function retrieveRecords(config) { | |
var prox = new Script.Util.WSProxy(); //Retrieving all records in data extension using WS Proxy. | |
var accessToken = 'Bitly Access Token XXXX'; | |
var headerNames = ["Authorization"]; | |
var headerValues = ["Bearer " + accessToken]; | |
var clickTrackingDeName = 'Bitly_Link_Tracking'; | |
var records = [], | |
moreData = true, | |
reqID = data = null; | |
while (moreData) { | |
moreData = false; | |
if (reqID == null) { | |
data = prox.retrieve("DataExtensionObject[" + config.name + "]", config.cols, config.filter); | |
} else { | |
data = prox.getNextBatch("DataExtensionObject[" + config.name + "]", reqID); | |
} | |
if (data != null) { | |
moreData = data.HasMoreRows; | |
reqID = data.RequestID; | |
for (var i = 0; i < data.Results.length; i++) { | |
var result_list = data.Results[i].Properties; | |
for (k in result_list) { | |
var key = result_list[k].Name; | |
var val = result_list[k].Value | |
var shortURL = val; | |
Platform.Function.UpsertData(clickTrackingDeName, ["ShortURL"], [shortURL], ["Tracked"], ["DONE"]); //Setting the Tracked value to DONE so that next time the same record will not get picked up | |
var apiURL = "https://api-ssl.bitly.com/v4/bitlinks/" + shortURL + "/clicks"; //Bitly GET API End point | |
var result = HTTP.Get(apiURL, headerNames, headerValues); | |
var response = result.Content; | |
var totalclicks = Platform.Function.ParseJSON(response).link_clicks; //Parsing the JSON response and getting the clicked date and clicks | |
var clickDateArray = []; | |
var clickNumberArray = []; | |
for (j = 0; j < totalclicks.length; j++) { | |
if (totalclicks[j].clicks > 0) { //Only take the dates which have clicked and ignore the other dates | |
var clickDate = totalclicks[j].date; | |
var clickNumber = totalclicks[j].clicks; | |
clickDateArray.push(clickDate); | |
clickNumberArray.push(clickNumber); | |
} | |
} | |
if (clickDateArray.length != 0) { | |
Platform.Function.UpsertData(clickTrackingDeName, ["ShortURL"], [shortURL], ["TotalClicks", "Clickdate"], [Stringify(clickNumberArray), Stringify(clickDateArray)]); //If there is any click has made on the link then Upserting the data extenison with click date & clicks | |
} | |
} | |
} | |
} | |
} | |
} | |
} catch (e) { | |
Write(Stringify(e)); | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment