使用Sharepoint REST API获取列表的所有者/创建者信息

时间:2014-03-19 15:50:14

标签: rest sharepoint

使用Sharepoint REST API,我能够获得"作者" (我作为所有者/创建者信息)信息的文件和文件夹。对于文件,我可以简单地扩展"作者" element并获取Title和UserId信息。对于文件夹,我必须使用" AuthorId"来自扩展的领域" ListItemAllFields"进行后续的REST调用以通过Id解析Title和UserId信息(我也不喜欢这个额外的步骤,但我还没有找到一种方法来获取具有单个GET的文件夹的信息)。但是,对于基本列表及其关联的" RootFolder" s,即使我展开RootFolder的ListItemAllFields,我也不会收到作者信息。有没有办法获取至少我的文件夹和文件所在的文档库列表的所有者\创建者信息?我希望扩展RootFolder的ListItemAllField会给我" AuthorId"就像它在文档库中创建的子文件夹一样,但我得到的只是:... / _ api / Web / GetFolderByServerRelativeUrl(' docLibraryRootFolderServerRelativeUrl')/ ListItemAllFields,是:

{
    "d": {
        "ListItemAllFields": null
    }
}

1 个答案:

答案 0 :(得分:1)

ListItemAllFields属性会将关联的 List ItemFileFolder个对象一起返回。

对于列表对象

REST查询:

http://<sitecollection>/<site>/_api/web/lists/getbytitle(listtitle)/ListItemAllFields
由于List对象与List Item对象没有关联,

不返回任何内容。


为了检索Author对象的List属性,您可以使用以下方法。解决方案是从List XML架构中提取Author属性

以下方法用于返回List对象的所有可用属性:

function getListProperties(listTitle) {
   var listEndpointUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/SchemaXml";
   return getJson(listEndpointUrl).then(
          function(data){
              var schemaXml = data.d.SchemaXml;
              return schemaXml2Json(schemaXml);     
          });     
}

,其中

function getJson(url) 
{
    return $.ajax({       
       url: url,   
       type: "GET",  
       contentType: "application/json;odata=verbose",
       headers: { 
          "Accept": "application/json;odata=verbose"
       }
    });
}

function schemaXml2Json(schemaXml)
{ 
    var jsonObject = {};
    var schemaXmlDoc = $.parseXML(schemaXml);
    $(schemaXmlDoc).find('List').each(function() {
      $.each(this.attributes, function(i, attr){
           jsonObject[attr.name] = attr.value;
      });
    });
    return jsonObject;
}    

<强>用法

如何获取Author对象的List属性:

getListProperties('Discussion Board')
.done(function(properties)
{
    console.log('List created by: ' + properties.Author);
})
.fail(
function(error){
    console.log(JSON.stringify(error));
});

请按this post了解详情。