首页 > 解决方案 > 如何使用 SPServices 和 JavaScript 更新 SharePoint 库子文件夹中的列表项

问题描述

在 SharePoint 中并使用 SPServices,我正在尝试更新子文件夹中上传的文件的内容这是图像,也是我要更新的文件元数据。 共享点图像 库结构如下所示:

列表名称:共享文档

文件夹 #1 - 文档子文件夹 #1 - 采购文件 #1 - 上传文件 文件 #2

所以基本上我想更新 requestID、文件类型等

任何人都可以帮忙吗?谢谢!

这是我的代码

                var oldFolderName = "Procurement";
                $().SPServices({
                    operation: "GetListItems",
                    async: false,
                    listName: 'Documents',
                    CAMLViewFields: "<ViewFields Properties='True' />",
                    CAMLQuery: "<Query><Where><Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>1</Value></Eq></Where></Query>",
                    CAMLQueryOptions: "<QueryOptions><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns></QueryOptions>",
                    completefunc: function (xData, Status) {
                        $(xData.responseXML).SPFilterNode('z:row').each(function () {
                            var existingFolderName = $(this).attr("ows_FileLeafRef").split(";#")[1];
                            if (existingFolderName == oldFolderName) {
                                var Folder_ID = $(this).attr("ows_ID");
                                $().SPServices({
                                    operation: "UpdateListItems",
                                    async: false,
                                    batchCmd: "Update",
                                    listName: 'Documents',
                                    valuepairs: [["Title", "Working"], ["requestID", "Working"]],
                                    ID: Folder_ID,
                                    completefunc: function (xData, Status) {
                                        console.log("Folder Name Updated Successfully...");
                                    }
                                });
                            }
                        });
                    }
                });

但代码仅更新子文件夹元数据(采购)而不是采购文件夹中的列表。

这就是我真正的意思 在此处输入图像描述

标签: sharepointsharepoint-2013spservices

解决方案


无需先使用 SPService 循环文件夹然后更新文件元数据,而是使用 Rest API getfilebyserverrelativeurl 获取文件并更新元数据,如下所示:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
updateFileMetadata();
function updateFileMetadata() {
        var def = jQuery.Deferred();
        
        var restSource= _spPageContextInfo.webAbsoluteUrl+"/_api/Web/getfilebyserverrelativeurl('/sites/Sitename/Shared%20Documents/Procurement/filename')/ListItemAllFields";
                
        var itemPayload = {"__metadata": {"type":"SP.Data.Shared_x0020_DocumentsItem"},"Title":"Updated","requestID","Working","filetype":"Working"};
        var dfd = jQuery.Deferred();
        $.ajax(
        {
            url: restSource,
            method: "POST",
            contentType: "application/json;odata=verbose",
            data: JSON.stringify(itemPayload),
            headers:
                {
                    "Accept": "application/json;odata=verbose",
                    "X-RequestDigest": $('#__REQUESTDIGEST').val(),
                    "X-HTTP-Method":"MERGE",
                    "If-Match": "*"

                },
            success: function (data) {
                alert("Success");
                dfd.resolve(data);
            },
            error: function (err) {
                dfd.reject(err);
                alert("Error");
            }
        });
        return dfd.promise();
    }
</script>

对于 _api/Web/getfilebyserverrelativeurl:

网址值应该是

/sites/sitename/Shared%20Documents/Procurement/filename 在这种情况下,

如果它是站点 url 中没有“站点”字符的根站点,则更改如下:

/Shared%20Documents/采购/文件名


推荐阅读