Thursday, 1 November 2018

Remove Duplicate Values in SharePoint List

<!--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>