0

こんにちは、ログインしたユーザーのみが作成したすべてのドキュメント ライブラリを取得しようとしています。次のコードでは、ユーザーから作成されていないライブラリも取得します。ありがとうございました。

function GetAllLibraries() {
    var listCollection = lists.getEnumerator();
    while (listCollection.moveNext()) {
        var listName = listCollection.get_current().get_title('Title');
        document.getElementById('leftDiv').innerHTML += "<b>" + listName + "<b/>" + "<br />";
    }
}
4

2 に答える 2

1

SharePoint JavaScript API (別名 JSOM)を利用しているため、このオブジェクトの作成者を特定するプロパティをSP.List object公開しないため、少し注意が必要です。しかし、以下に示すよう に、プロパティを抽出できるAuthorという良いニュースAuthorSP.List.schemaXml property

現在のユーザーが作成したリストを取得する方法の完全な例を次に示します

var ctx = SP.ClientContext.get_current();
var allLists = ctx.get_web().get_lists();
var currentUser = ctx.get_web().get_currentUser();
ctx.load(allLists,'Include(SchemaXml)');
ctx.load(currentUser);
ctx.executeQueryAsync(
   function(){


      var lists = allLists.get_data().filter(function(list){
          var listProperties = schemaXml2Json(list.get_schemaXml()); 
          var listAuthorId = parseInt(listProperties.Author);
          return listAuthorId == currentUser.get_id(); 
      }); 

      console.log("The amount of lists created by current user: " + lists.length);       
   },
   logError);   

}


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;
}




function logError(sender,args){
    console.log(args.get_message());
}
于 2016-08-16T12:37:22.410 に答える