To delete a number of data (max-1000) at time using $batch REST API from SharePoint list:-
Use below snippet to delete records from SharePoint list. The below code will help you to delete more than 1 records at single REST API. We can able to delete upto 1000 records at time. After 1000 items, it will show error like "The current change set contains too many operations. A maximum number of '1000' operations are allowed in a change set." So do not try to delete more than 1000 records at time.
We can delete more than 1000 items using 200/300 records at a time single REST API call. We can call this deleteListItems function 5 to 6 times.
<script>
$(document).ready(function(){
var data = [
{ 'ID':1, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':2, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':3, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':4, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':5, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':6, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':7, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':8, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':9, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
{ 'ID':10, 'name':'Tester1','email':'tester1@gmail.com', 'mobile':9832145326, 'address':'Gurgaon, Haryana, India', 'company':'Param India Pvt. Limited'},
];
deleteListItems ('Test', data, function (result, outcome) { //Test is a SP list Name & data is coming from SP list or an app.
if (result) {
console.log('Items deleted Successfully');
console.log(outcome);//Success/Error message will show in an obj
//Note: Sometimes error will come in succes Message too. So be careful.
} else {
console.log('Some Error is coming');
console.error(outcome);//Error message will show in an obj
}
});
//function to generate unique GUID or ID.
function generateID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
//Deleting data items from SharePoint list using $batch/REST API
function deleteListItems (spListName, records, goBackToParent) {
var batchId = generateID();
var changeSetId = generateID();
var batchData = new Array();
for (var i = 0; i < records.length; i++) {
if (records[i] == undefined) {
return;
}
// create the request REST API
var reqURL = _spPageContextInfo.webAbsoluteUrl
+ '/_api/web/lists/getbytitle(\'' + spListName + '\')'
+ '/items(' + records[i].ID + ')';
// create the changeset
batchData.push('--changeset_' + changeSetId);
batchData.push('Content-Type: application/http');
batchData.push('Content-Transfer-Encoding: binary');
batchData.push('');
batchData.push('DELETE ' + reqURL + ' HTTP/1.1');
batchData.push('Content-Type: application/json;odata=verbose');
batchData.push('Accept: application/json;odata=verbose');
batchData.push('IF-MATCH: *');
batchData.push('');
}
batchData.push('--changeset_' + changeSetId + '--');
var batchBody = batchData.join('\r\n');
batchData = new Array();
batchData.push('--batch_' + batchId);
batchData.push('Content-Type: multipart/mixed; boundary="changeset_' + changeSetId + '"');
batchData.push('Content-Length: ' + batchBody.length);
batchData.push('Content-Transfer-Encoding: binary');
batchData.push('');
batchData.push(batchBody);
batchData.push('');
batchData.push('--batch_' + batchId + '--');
batchBody = batchData.join('\r\n');
var reqEndpoint = _spPageContextInfo.webAbsoluteUrl + '/_api/$batch';
var requestHeader = {
'X-RequestDigest': $("#__REQUESTDIGEST").val(),
'Content-Type': 'multipart/mixed; boundary="batch_' + batchId + '"'
};
$.ajax({
url: reqEndpoint,
type: 'POST',
async: false,
headers: requestHeader,
data: batchBody,
success: function (response) {
goBackToParent(true, response);
},
error: function (error) {
goBackToParent(true, error);
}
});
}
});
</script>
Comments
Post a Comment