Добавить событие в список календарей SharePoint с помощью REST _api

Есть ли кто-нибудь, кто знает, как публиковать события в списке календарей SharePoint Online с помощью Sharepoint REST _api.

Я нашел этот пост здесь, в стеке: ссылка, но он использует авторизацию, которую мне не нужно использовать в моем случае, потому что мой приложение живет внутри точки доступа. Я нашел документы о том, как сделать CRUD для календаря Outlook. Но это, конечно, не распространяется на sharepoint.

Это код до сих пор:

    function PostToBokningar() {
    var url = `${_spPageContextInfo.webAbsoluteUrl}/_api/web/lists/getbytitle('Bokningar')/items`;
    //requestHeaders
    var requestHeaders = {
        "accept": "application/json;odata=verbose",
        "content-type": "application/json;odata=verbose",
        "X-RequestDigest": jQuery('#__REQUESTDIGEST').val()
    }
    //Data
    var data = {
        __metadata: { "type": "SP.Data.BokningarListItem" },
        Title: "Test title",
        EventDate: moment.utc("2017-12-12 10:00").format('YYYY-MM-DD HH:mm:ssZ'),
        EndTime: moment.utc("2017-12-12 17:00").format('YYYY-MM-DD HH:mm:ssZ'),
        Description: "test description"
    };
    //requestBod
    var requestBody = JSON.stringify(data);
    //Post
    var post = jQuery.ajax({
        url: url,
        type: "POST",
        headers: requestHeaders,
        data: data
    })

}

Сообщение об ошибке, которое я получаю:

{"error":{"code":"-1, Microsoft.SharePoint.Client.InvalidClientQueryException","message":{"lang":"en-US","value":"Invalid JSON. A token was not recognized in the JSON content."}}}

Какие-либо предложения?


person AllramEst    schedule 11.12.2017    source источник


Ответы (1)


Да, у вас есть две ошибки в вашем коде. Вы не отправляете строковый json в службу REST. Замените вызов на:

var post = jQuery.ajax({
    url: url,
    type: "POST",
    headers: requestHeaders,
    data: requestBody
})

А еще поле для окончания события называется EndDate, а не EndTime, поэтому замените на:

var data = {
    __metadata: { "type": "SP.Data.BokningarListItem" },
    Title: "Test title",
    EventDate: moment.utc("2017-12-12 10:00").format('YYYY-MM-DD HH:mm:ssZ'),
    EndDate: moment.utc("2017-12-12 17:00").format('YYYY-MM-DD HH:mm:ssZ'),
    Description: "test description"
};
person mikeplate    schedule 12.12.2017
comment
Вы, сэр, спаситель жизни!. Благодарю вас. Я чувствую себя немного глупо, не замечая этих очевидных ошибок. Я фактически скопировал и вставил имена столбцов списка. Чтобы не было орфографических ошибок. Для requetBody нет хорошего объяснения. Еще раз спасибо!! - person AllramEst; 12.12.2017