使用REST api创建DocumentSet

时间:2014-12-15 07:31:43

标签: rest sharepoint document-set

如何格式化其余的uri以在SP中创建文档集?

下面的JSOM代码工作正常,但我更喜欢使用REST,以便能够从工作流程中调用它。

var dsresult = SP.DocumentSet.DocumentSet.create(context, parentFolder, "docsetfromjsom", docsetCtId);

我根据this MSDN文章

尝试了这种格式
var restQueryUrl = spAppWebUrl + "/_api/SP.AppContextSite(@target)/SP.DocumentSet.DocumentSet.create('serverrelativeurl','docsetname','ctid')?@target='spHostUrl'";

尝试过其他格式但没有成功。在jsom中你还需要包含上下文,但我假设在休息时你不需要使用它(我认为)。有人试过这个吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我在already answered similar question SharePoint StackExchange {{3}}。

总而言之,似乎无法使用SharePoint 2013 REST API创建文档集,因为无法通过REST访问SP.DocumentSet.DocumentSet.create函数。但您可以为此目的使用SharePoint 2010 REST API。

以下示例演示如何使用SharePoint 2010 REST接口创建文档集:

function getListUrl(webUrl,listName) 
{
    return $.ajax({       
       url: webUrl + "/_api/lists/getbytitle('" + listName + "')/rootFolder?$select=ServerRelativeUrl",   
       type: "GET",   
       contentType: "application/json;odata=verbose",
       headers: { 
          "Accept": "application/json;odata=verbose"
       }
    });
}


function createFolder(webUrl,listName,folderUrl,folderContentTypeId) 
{                
     return $.ajax({
           url: webUrl + "/_vti_bin/listdata.svc/" + listName,
           type: "POST",
           contentType: "application/json;odata=verbose",
           headers: {
              "Accept": "application/json;odata=verbose",
              "Slug": folderUrl + "|" + folderContentTypeId
           }
     });
}


function createDocumentSet(webUrl,listName,docSetName)
{
    return getListUrl(webUrl,listName)
           .then(function(data){
               var folderUrl = data.d.ServerRelativeUrl + '/' + docSetName;
               return createFolder(webUrl,listName,folderUrl,'0x0120D520');
           }); 
}

<强>用法

在文档库中创建名为Orders的文档集:

createDocumentSet(webUrl,'Documents','Orders')
.done(function(data)
{
    console.log('Document Set ' + data.d.Name + ' has been created succesfully'); 
})
.fail(
function(error){
    console.log(JSON.stringify(error));
});