Как удалить все элементы из списка Sharepoint, используя Python REST? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь удалить все элементы из списка Sharepoint, используя Python. Однако официальной документации Sharepoint REST, поддерживающей Python, не существует. Я просмотрел множество статей StackOverflow и создал код python для удаления одного элемента. Однако я не могу понять, как удалить все элементы одновременно. Кроме того, итерация по всему была бы довольно сложной, поскольку запрос GET возвращает JSON также с большим количеством ненужных метаданных, поэтому анализ является проблемой. Поэтому я не могу go удалить все элементы сразу. В настоящее время я использую requests.post(https://{site_url}/_api/web/lists/getbytitle('List Name')/items(id), auth, headers) и задаю следующие заголовки: X-RequestDigest: digestValue, X-HTTP-Method: DELETE и IF-MATCH: *. Это работает очень хорошо, и я могу удалить элемент по его id, но не могу удалить все элементы списка.

Любая помощь приветствуется, особенно с использованием python requests, как я Я использую это для выполнения операций CRUD. Кроме того, тот же код выдает ошибку Bad Request, если я использую https://{site_url}/_api/web/lists/getbytitle('List Name')/items/getitembyid(id) вместо https://{site_url}/_api/web/lists/getbytitle('List Name')/items(id). Кроме того, я также не могу удалить, используя requests.post(https://{site_url}/_api/web/lists/getbytitle('List Name')/items?filter=Title eq 'title1'. Это снова дает Bad Request. В обоих случаях, кроме ошибки Bad Request, когда я пытаюсь ее зарегистрировать, выдается следующее исключение: Microsoft.Sharepoint.Client.InvalidClientQueryException с содержанием ошибки, говорящим The type SP.ListItemEntityCollection does not support HTTP DELETE method. Любое понимание этого также приветствуется.

1 Ответ

0 голосов
/ 17 апреля 2020

Невозможно удалить все элементы списка одновременно. SharePoint Rest API не предоставил такую ​​конечную точку. Мы предлагаем вам удалить элемент один за другим, поместите запрос на удаление в al oop, как показано ниже:

function deleteItem(url) {
$.ajax({
    url: _spPageContextInfo.webAbsoluteUrl + url,
    type: "DELETE",
    headers: {
        "accept": "application/json;odata=verbose",
        "X-RequestDigest": $("#__REQUESTDIGEST").val(),
        "If-Match": "*"
    },
    success: function (data) {

    },
    error: function (error) {
        alert(JSON.stringify(error));
    }
});
}

$.ajax({
    url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('MyList')/items",
    type: "GET",
    headers: {
        "accept": "application/json;odata=verbose",
    },
    success: function (data) {
        var items = data.d.results;
        for(var item in items){
            var url = "/_api/Web/Lists/getByTitle('MyList')/getItemById(item.ID)"
            deleteItem(url);
        }
    },
    error: function (error) {
        alert(JSON.stringify(error));
    }
});

Дополнительные ссылки:

...