我有一个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();


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

最佳答案

如果您对使用外部库感到满意,则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();

09-10 12:14
查看更多