<!--Copy all source code, paste it inside Content Editor / Script Editor-->
<div><h1>Remove Duplicate Values</h1></div>
<div>Enter Your List Name : <input type='text' id='txtList' /></div>
<div>Enter Your Unique Column : <input type='text' id='txtUniColumn' /><input type='button' value='Remove Duplicate Value' onclick='getListItems()'/></div>
<div id='divDel'>Deleted Items
<div id='divDelItems'></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type='text/javascript'>
$(document).ready(function(){
debugger;
$('#divDelItems').html('');
$('#divDel').hide();
});
function RemoveDuplicateItems(items, propertyName) {
var result = [];
var ExistingItem = [];
if (items.length > 0) {
$.each(items, function (index, item) {
if ($.inArray(item[propertyName], result ) == -1) {
if(!IsNullOrUndefined(item[propertyName])){
result.push(item[propertyName]);
}
}
else{
if(!IsNullOrUndefined(item[propertyName])){
ExistingItem.push(item['Id']+ ' : ' + item[$('#txtUniColumn').val()] );
}
}
});
}
return ExistingItem;
}
function getListItems() {
$.ajax({
url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('"+$('#txtList').val()+"')/items?$select="+$('#txtUniColumn').val()+",Id&$top=5000&$orderby= Modified desc" ,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function(data) {
var items = data.d.results;
items = RemoveDuplicateItems(items, $('#txtUniColumn').val());
$('#divDel').show();
if(items!=undefined && items.length>0){
for(var i=0; i<items.length; i++){
deleteItems(items[i]);
}}
},
error: function(data) {
alert(data.responseText);
}
});
}
var count = 0;
function deleteItems(Id){
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('"+$('#txtList').val()+"')/items(" + Id.split(':')[0] + ")",
type: "POST",
contentType: "application/json;odata=verbose",
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"IF-MATCH": "*",
"X-HTTP-Method": "DELETE",
},
success: function(data) {
var cnt = count++;
console.log(Id + ' Count - ' );
$('#divDelItems').append('<div>' + Id + ' Count - ' + cnt + '</div>');
},
error: function(data) {
}
});
}
</script>
<div><h1>Remove Duplicate Values</h1></div>
<div>Enter Your List Name : <input type='text' id='txtList' /></div>
<div>Enter Your Unique Column : <input type='text' id='txtUniColumn' /><input type='button' value='Remove Duplicate Value' onclick='getListItems()'/></div>
<div id='divDel'>Deleted Items
<div id='divDelItems'></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type='text/javascript'>
$(document).ready(function(){
debugger;
$('#divDelItems').html('');
$('#divDel').hide();
});
function RemoveDuplicateItems(items, propertyName) {
var result = [];
var ExistingItem = [];
if (items.length > 0) {
$.each(items, function (index, item) {
if ($.inArray(item[propertyName], result ) == -1) {
if(!IsNullOrUndefined(item[propertyName])){
result.push(item[propertyName]);
}
}
else{
if(!IsNullOrUndefined(item[propertyName])){
ExistingItem.push(item['Id']+ ' : ' + item[$('#txtUniColumn').val()] );
}
}
});
}
return ExistingItem;
}
function getListItems() {
$.ajax({
url: _spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('"+$('#txtList').val()+"')/items?$select="+$('#txtUniColumn').val()+",Id&$top=5000&$orderby= Modified desc" ,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function(data) {
var items = data.d.results;
items = RemoveDuplicateItems(items, $('#txtUniColumn').val());
$('#divDel').show();
if(items!=undefined && items.length>0){
for(var i=0; i<items.length; i++){
deleteItems(items[i]);
}}
},
error: function(data) {
alert(data.responseText);
}
});
}
var count = 0;
function deleteItems(Id){
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('"+$('#txtList').val()+"')/items(" + Id.split(':')[0] + ")",
type: "POST",
contentType: "application/json;odata=verbose",
headers: {
"Accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"IF-MATCH": "*",
"X-HTTP-Method": "DELETE",
},
success: function(data) {
var cnt = count++;
console.log(Id + ' Count - ' );
$('#divDelItems').append('<div>' + Id + ' Count - ' + cnt + '</div>');
},
error: function(data) {
}
});
}
</script>