<script runat="server">
Platform.Load("core", "1");
var api = new Script.Util.WSProxy();
try {
var config = {
name: "Master Seed List",
cols: ["Email", "ContactId"],
filter: null,
opts: { BatchSize: 300 },
props: { QueryAllAccounts: false }
};
var result = [], moreData = true, reqID = null;
while (moreData) {
if (reqID) config.props.ContinueRequest = reqID;
var req = api.retrieve(
"DataExtensionObject[" + config.name + "]",
config.cols, config.filter, config.opts, config.props
);
if (req && req.Results && req.Results.length > 0) {
moreData = req.HasMoreRows;
reqID = req.RequestID;
for (var i = 0; i < req.Results.length; i++) {
var props = req.Results[i].Properties;
var record = {};
for (var j = 0; j < props.length; j++) {
var key = props[j].Name;
var val = props[j].Value;
if (key.indexOf("_") !== 0) record[key] = val;
}
result.push(record);
}
} else {
moreData = false;
}
}
// ✅ Debugging: Checking if data is fetched
if (result.length === 0) {
Write("<h3 style='color:red;'>No data retrieved from Data Extension.</h3>");
} else {
Write("<h3>Fetched Records:</h3>");
Write(Stringify(result));
}
// ✅ Duplicate Check Logic
var duplicateCheckAttribute = {};
var duplicates = [];
for (var i = 0; i < result.length; i++) {
var email = result[i].Email;
if (duplicateCheckAttribute[email]) {
duplicateCheckAttribute[email]++;
} else {
duplicateCheckAttribute[email] = 1;
}
}
// ✅ Identify duplicate emails
for (var email in duplicateCheckAttribute) {
if (duplicateCheckAttribute[email] > 1) {
duplicates.push({
Email: email,
Occurrences: duplicateCheckAttribute[email]
});
}
}
// ✅ Display duplicate results
if (duplicates.length === 0) {
Write("<h3 style='color:green;'>No duplicate emails found.</h3>");
} else {
Write("<h3>Duplicate Emails Found:</h3>");
Write(Stringify(duplicates));
}
} catch (error) {
Write("<h3 style='color:red;'>Error:</h3>");
Write(Stringify(error));
}
</script>