[英]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.