javascript - 使用 REST api 将事件添加到 SharePoint 日历列表

标签 javascript sharepoint-online sharepoint-list sharepoint-api

是否有人知道如何使用 Sharepoint REST _api 将事件发布到 SharePoint Online 日历列表。

我在堆栈上找到了这篇文章:link 但它使用了授权,但在我的例子中我不必使用授权,因为我的应用程序位于共享点内部。我找到了有关如何对 Outlook 日历进行 CRUD 的文档。但它当然不包括共享点。

这是到目前为止的代码:

    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."}}}

有什么建议吗?

最佳答案

是的,您的代码中有两个错误。您没有将字符串化的 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"
};

关于javascript - 使用 REST api 将事件添加到 SharePoint 日历列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47758508/

相关文章:

javascript - 正确检查 Javascript 的加载

javascript - 为什么存储 base64 数据流不起作用?

logical-operators - 使用 CAML <Or> 和 <And> 运算符

microsoft-graph-api - 如何使用 Microsoft Graph API 获取当前站点的 siteId?

sharepoint-2013 - 尝试读取导航属性的值时发现具有非空值的“PrimitiveValue”节点;

javascript - 在选中和未选中的选择框中隐藏和显示特定的表单项?

javascript - 如何使用 jQuery 将 src 设置为 iframe?

javascript - 如何以编程方式提交/自动保存 SharePoint 快速编辑表单

c#-4.0 - 使用客户端上下文和 CAML 查询删除共享点列表中的所有行

sharepoint - 更新多个 SharePoint 列表项