首页 > 解决方案 > 使用javascript在sharepoint中获取文档集路径

问题描述

在 sharepoint online 上,我有一个文档(id=123)。该文档位于使用 javascript 的文档集中。当我尝试查找该文档集的路径时,出现错误。

我的代码是:

var item;
var folder;

ExecuteOrDelayUntilScriptLoaded(editLinks, "sp.js");

function editLinks()
{
     getItemParent(123);
}

function getItemParent(itemID)
{
    var clientContext = new SP.ClientContext(); 

    var web = clientContext.get_web();
    var targetList = web.get_lists().getByTitle([List Name]);
    item = targetList.getItemById(itemID);
    clientContext.load(item, 'DisplayName');
    clientContext.load(item, 'Folder');
    folder = item.get_folder();
    clientContext.load(folder);
    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded), 
        Function.createDelegate(this, this.onQueryFailed));

}

function onQuerySucceeded(sender, args) {   
    console.log(item.get_displayName());
    console.log(folder.get_serverRelativeUrl());
}

function onQueryFailed() {   
    console.log("Query Failed");
}

当我运行它时 item.get_displayName() 工作正常,但是在尝试获取 serverRelativeUrl 时会引发以下错误:

sp.runtime.js:2 Uncaught Error: Object reference not set to an instance of an object on server. The object is associated with property Folder.

标签: javascriptsharepoint

解决方案


这是我的测试脚本供您参考。

<script type="text/javascript">
        var item;
        //var folder;

        ExecuteOrDelayUntilScriptLoaded(editLinks, "sp.js");

        function editLinks() {
            getItemParent(6);
        }

        function getItemParent(itemID) {
            var clientContext = new SP.ClientContext();

            var web = clientContext.get_web();
            var targetList = web.get_lists().getByTitle("LibDS");
            item = targetList.getItemById(itemID);
            //folder = item.get_folder();
            clientContext.load(item);
            //clientContext.load(item, 'DisplayName');
            //clientContext.load(item, 'Folder');            
            //clientContext.load(folder);
            clientContext.executeQueryAsync(
                Function.createDelegate(this, this.onQuerySucceeded),
                Function.createDelegate(this, this.onQueryFailed));

        }

        function onQuerySucceeded(sender, args) {
            console.log(item.get_fieldValues("FileDirRef").FileDirRef);
            //console.log(folder.get_serverRelativeUrl());
        }

        function onQueryFailed() {
            console.log("Query Failed");
        }
    </script>

在此处输入图像描述


推荐阅读