簡體   English   中英

在SharePoint Online(CSOM)內檢查和在文檔庫中創建文件夾的最佳方法?

[英]Fatest way to check and create folder in document library within SharePoint Online (CSOM)?

我有一個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中檢查並在文檔庫中創建文件夾的最快方法是什么?

我不能保證這會有多 ,但是最終它可以在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;
}

在Powershell中可以找到大多數CSOM示例。 C#CSOM中的過程實際上是相同的,因此,當C#不可用時,下一次查找Powershell示例。

如果您對使用外部庫感到滿意,則OfficeDevPnP.Core可以為SharePoint和SharePoint Online提供一些出色的CSOM擴展。 它可以作為NuGet軟件包輕松添加到您的項目中。

根據您的要求,有sureFolderPath擴展。 此函數將檢查文件夾是否存在,如果需要,請創建該文件夾並返回Microsoft.SharePoint.Client.Folder對象。

非常容易使用:

var webRelativeUrlToFolder = "/doc_archive/K20170409-01"
var folder = cc.Web.EnsureFolderPath(webRelativeUrlToFolder);
cc.Load(folder);
cc.ExecuteQuery();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM