有没有办法更新Office 365中的Modified字段?我检查了CSOM和Batch更新方法。但它失败了。有人可以帮我更新这个字段。
答案 0 :(得分:1)
在尝试为列表项设置Modified
,Created
,Editor
和Author
字段之前,您需要在列表中禁用一些属性,特别是{ {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 By
和Modified
字段等系统字段演示如下。
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
这应该可以解决问题。