更新Office 365中的“已修改”字段

时间:2015-05-07 06:27:19

标签: sharepoint office365 csom

有没有办法更新Office 365中的Modified字段?我检查了CSOM和Batch更新方法。但它失败了。有人可以帮我更新这个字段。

3 个答案:

答案 0 :(得分:1)

在尝试为列表项设置ModifiedCreatedEditorAuthor字段之前,您需要在列表中禁用一些属性,特别是{ {1}}以及良好的衡量标准EnableVersioning

SharePoint Online先决条件是SharePointOnline CSOM:

.NET client API reference for SharePoint Online

Nuget - Microsoft.SharePointOnline.CSOM

ForceCheckout

答案 1 :(得分:0)

SharePoint CSOM API不支持系统更新(来自SSOM API的SystemUpdate method对应),但您可以直接操作Modified ByModified字段等系统字段演示如下。

  

先决条件:SharePoint Server 2013 Client Components SDK

using (var ctx = GetContext(webUri, userName, password))
{
    //get List Item
    var list = ctx.Web.Lists.GetByTitle(listTitle);
    var item = list.GetItemById(itemId);
    //Retrieve User
    var user = ctx.Web.EnsureUser(accountName);
    ctx.Load(user);
    ctx.ExecuteQuery();
    //Update system fields
    item["Modified"] = DateTime.Now.AddMonths(-6);
    item["Created"] = DateTime.Now.AddYears(-1);
    item["Editor"] = user.Id;
    item["Author"] = user.Id;
    item.Update();
    ctx.ExecuteQuery();
}

,其中

public static ClientContext GetContext(Uri webUri, string userName, string password)
{
    var securePassword = new SecureString();
    foreach (var ch in password) securePassword.AppendChar(ch);
    return new ClientContext(webUri) { Credentials = new SharePointOnlineCredentials(userName, securePassword) };
}

答案 2 :(得分:0)

SharePoint CSOM API现在支持使用UpdateOverwriteVersion方法进行系统更新。这样,您可以修改Modified,Created,Author和Editor属性,而无需更改项目Version。例如:

        $file = Get-PnPFile -Url $FileUrl -AsListItem 
        ##update file properties 
        $item["Modified"] = $FileModifiedDate
        $item["Created"] = $FileCreatedDate 
        $item["Author"] = $FileCreatedByDest.ID 
        $item["Editor"] = $FileModifiedByDest.ID 
        $fileTest2.UpdateOverwriteVersion()
        Invoke-PnPQuery

这应该可以解决问题。