javascript - 使用 Javascript 以编程方式访问 sharepoint 中文档集中的文件

标签 javascript sharepoint

我想要访问文档库中特定文档集中的文件。

到目前为止,我能够使用 JSOM 获取特定的文档集名称和 ID,如下所示。 如何读取文档集内的所有文件

<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js"></script>
<script type="text/javascript" src="_layouts/15/sp.runtime.js"></script>
<script type="text/javascript" src="_layouts/15/sp.js"></script>
 
<script type="text/javascript">
   ExecuteOrDelayUntilScriptLoaded(MainFunction, "sp.js");
 
    function MainFunction() {
        var clientContext = new SP.ClientContext.get_current();
        var oList = clientContext.get_web().get_lists().getByTitle('Planner Session');
 
        var camlQuery = new SP.CamlQuery(); //initiate the query object
 
        camlQuery.set_viewXml('<View><Query><Where><Lt><FieldRef Name="ID" /><Value Type="Counter">3</Value></Lt></Where><OrderBy><FieldRef Name="ID" Ascending="FALSE"/></OrderBy></Query><RowLimit>1</RowLimit></View>');
 
        this.collListItem = oList.getItems(camlQuery);
 
        clientContext.load(collListItem);
        clientContext.executeQueryAsync(
            Function.createDelegate(this, this.onQuerySucceeded),
            Function.createDelegate(this, this.onQueryFailed)
        );
    }
 
    function onQuerySucceeded(sender, args) {
        var DocSet = "";
        var listItemEnum = collListItem.getEnumerator();
 
        while (listItemEnum.moveNext()) {
            var oListItem = listItemEnum.get_current();
            DocSet += '\n\nID: ' + oListItem.get_id() + '\nName: ' + oListItem.get_item('FileLeafRef');
        }
 // Here i would like to get the file inside the documentSet 
        alert(DocSet.toString());
    }
 
    function onQueryFailed(sender, args) {
        alert('Request failed. ' + args.get_message() +
            '\n' + args.get_stackTrace());
    }
</script>​
 
<input type="button" value="Get Products" onclick="MainFunction()"/>

最佳答案

如何通过SharePoint CSOM获取文档集的文件

假设以下结构:

Documents (library)
    |
    2013 (Document set)

基于查询的方法

以下示例演示如何使用 CAML query 返回位于文档集中的文件:

function getListItems(listTitle,folderUrl,success,error)
{
   var ctx = SP.ClientContext.get_current();
   var web = ctx.get_web();
   var list = web.get_lists().getByTitle(listTitle);
   var qry = SP.CamlQuery.createAllItemsQuery();
   qry.set_folderServerRelativeUrl(folderUrl);
   var items = list.getItems(qry);
   ctx.load(items,'Include(File)');
   ctx.executeQueryAsync(
      function() {
          success(items); 
      },
      error);
}

要点:

用法

var listTitle = 'Documents';
var docSetUrl = '/Documents/2013';  
getListItems(listTitle,docSetUrl, 
     function(items){
        for(var i = 0; i < items.get_count();i++) {
            var file = items.get_item(i).get_file();
            console.log(file.get_title());
        }
     },
     function logError(sender,args) 
     {
        console.log(args.get_message());
     });

使用 SP.Web.getFolderByServerRelativeUrl 方法

使用SP.Web.getFolderByServerRelativeUrl Method获取位于指定服务器相对 URL 的文档集对象,然后 SP.Folder.files property获取文档集中包含的所有文件的集合

完整示例:

function getFiles(folderUrl,success,error)
{
    var ctx = SP.ClientContext.get_current();
    var files = ctx.get_web().getFolderByServerRelativeUrl(folderUrl).get_files();
    ctx.load(files);
    ctx.executeQueryAsync(
      function() {
          success(files); 
      },
      error);
}

使用

var docSetUrl = '/Documents/2013';  //<-- '2013'
getFiles(docSetUrl, 
     function(files){
        for(var i = 0; i < files.get_count();i++) {
            var file = files.get_item(i);
            console.log(file.get_title());
        }
     },
     function logError(sender,args) 
     {
        console.log(args.get_message());
     });

关于javascript - 使用 Javascript 以编程方式访问 sharepoint 中文档集中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29462134/

相关文章:

javascript - Angular - 错误 : 10 $digest() iterations reached. 中止

c# - SPNavigationNode.IsVisible 属性未按预期在共享点中工作

java - 使用 NTLM 对 Sharepoint 使用 HttpClient 身份验证机制时出现 HTTP 403 Forbidden

javascript - 使用drawImage时“可能无法导出受污染的 Canvas ”

sharepoint - 你如何链接不同站点的 Sharepoint 列表

javascript - SharePoint 聊天图标嵌入 iframe 问题

excel - 使用宏编辑共享点列表

javascript - Ember 延迟 Controller 直到身份验证完成

javascript - 单元测试服务不注入(inject) Factory

javascript - 如何添加到 Chrome 多功能框(地址栏)的上下文菜单中?