在SharePoint Online(CSOM)中检查和创建文档库中文件夹的最快方法是什么?

4
我有一个SharePoint Online,可以通过我的控制台应用程序成功连接:
private static ClientContext GetUserContext()
{
   var o365SecurePassword = new SecureString();

   foreach (char c in o365Password)
   {
       o365SecurePassword.AppendChar(c);
   }

   var o365Credentials = new SharePointOnlineCredentials(o365Username, o365SecurePassword);

   var o365Context = new ClientContext(o365SiteUrl);
   o365Context.Credentials = o365Credentials;

   return o365Context;
}

现在我需要做的是进入名为“doc_archive”的SharePoint文件库,并检查是否存在一个名称为“K20170409-01”的文件夹。 如果不存在,则创建一个新的文件夹。

尝试失败

ClientContext context = GetUserContext();

Web web = context.Web;
Web webroot = context.Site.RootWeb;
context.Load(web);
context.Load(webroot);

List list = webroot.GetList("doc_archive");
context.Load(list);

FolderCollection folders = list.RootFolder.Folders;
context.Load(folders);

IEnumerable<Folder> existingFolders = context.LoadQuery(
    folders.Include(
    folder => folder.Name)
);
context.ExecuteQuery();

在SharePoint Online中,通过CSOM(命令行应用程序),最快的检查和创建文档库中文件夹的方法是什么?

在失败的尝试中会发生什么事情? - ΩmegaMan
2个回答

5
如果您习惯于使用外部库,那么OfficeDevPnP.Core为SharePoint和SharePoint Online提供了一些很棒的CSOM扩展。它可以作为NuGet包方便地添加到您的项目中。
对于您的要求,可以使用EnsureFolderPath扩展。此函数将检查文件夹是否存在,如有必要则创建该文件夹,并返回Microsoft.SharePoint.Client.Folder对象。
非常容易使用:
var webRelativeUrlToFolder = "/doc_archive/K20170409-01"
var folder = cc.Web.EnsureFolderPath(webRelativeUrlToFolder);
cc.Load(folder);
cc.ExecuteQuery();

1
我不能保证这个方法的速度有多快,但它最终可以在0365上运行。请注意,如果目标已经存在,它会抛出一个ServerException异常。
using (var ctx = new ClientContext(siteUrl))
{

     ctx.Credentials = new SharePointOnlineCredentials(username, securePwd);

     var list = new ListCreationInformation()
     {
         Title = title
         Description = "User Created Document Library",
         TemplateType = asDocumentLibrary ? 101 : 100 // 100 is a custom list.
     };

    ctx.Web.Lists.Add(list);

    ctx.ExecuteQuery();
    success = true;
}

大部分CSOM的示例都是在Powershell中找到的。C# CSOM中的过程实际上是相同的,因此下次在没有C#示例时,请查找Powershell示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接