2017-03-07 9 views
-1

以下のJavaScriptコードを使用して、SharePoint 2013のすべてのリストのタイトルを取得しています。これをどのように各リストのURLを返すように修正できますか?SharePoint 2013 - JavaScriptがリストからURLを取得する

私はこの疲れてきたが、それは動作しません:

//listUrl = oList.get_url(); 
    //console.log(listUrl); 

コード:

function retrieveAllListProperties() { 
    var clientContext = new SP.ClientContext('/StrategicProjectOffice'); 
    var oWebsite = clientContext.get_web(); 
    this.collList = oWebsite.get_lists(); 
    clientContext.load(collList); 

    clientContext.executeQueryAsync(
     Function.createDelegate(this, this.onQuerySucceeded) 
    ); 
} 

function onQuerySucceeded() { 
    var listTitle = ''; 
    var listEnumerator = collList.getEnumerator(); 
    while (listEnumerator.moveNext()) { 
     var oList = listEnumerator.get_current(); 
     listTitle = oList.get_title(); 
     //listUrl = oList.get_url(); 
     //console.log(listUrl); 
     if (listTitle.indexOf("SPO") >= 0) { 
      getItemsFromView(listTitle, "All Tasks"); 
     } 
    } 
} 

答えて

0

リストURLはあなたの例では、SPList.RootFolder propertyを経由して行を取り出すことができます。

clientContext.load(collList); 

に置き換える必要があります Listオブジェクトの RootFolder.ServerRelativeUrlプロパティを返すために、クエリを構築するよう指示
clientContext.load(collList,'Include(RootFolder.ServerRelativeUrl)'); 

。ここで

は、リストを取得し、そのURLを出力します私のバージョンです:

var ctx = SP.ClientContext.get_current(); 
var web = ctx.get_web(); 
var lists = web.get_lists(); 
ctx.load(lists,'Include(RootFolder.ServerRelativeUrl)'); 
ctx.executeQueryAsync(
    function() { 
    for(var i = 0; i < lists.get_count(); i++){ 
     var list = lists.getItemAtIndex(i); 
     var listUrl = list.get_rootFolder().get_serverRelativeUrl(); 
     console.log(listUrl); 
    } 
    }, 
    function(sender,args){ 
     console.log(args.get_message()); 
    } 
);