在 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;
}
大多数 CSOM 示例都可以在 Powershell 中找到。 C# CSOM 中的过程其实是一样的,所以下次没有C# 的时候找一个Powershell 例子。
如果您对使用外部库感到满意,那么可以将 OfficeDevPnP.Core has some great CSOM extensions for SharePoint and SharePoint Online. It's readily available as a NuGet 包添加到您的项目中。
根据您的要求,有 EnsureFolderPath 扩展名。此函数将检查文件夹是否存在,如果需要则创建它并 return Microsoft.SharePoint.Client.Folder
对象。
非常容易使用:
var webRelativeUrlToFolder = "/doc_archive/K20170409-01"
var folder = cc.Web.EnsureFolderPath(webRelativeUrlToFolder);
cc.Load(folder);
cc.ExecuteQuery();
我有一个 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;
}
大多数 CSOM 示例都可以在 Powershell 中找到。 C# CSOM 中的过程其实是一样的,所以下次没有C# 的时候找一个Powershell 例子。
如果您对使用外部库感到满意,那么可以将 OfficeDevPnP.Core has some great CSOM extensions for SharePoint and SharePoint Online. It's readily available as a NuGet 包添加到您的项目中。
根据您的要求,有 EnsureFolderPath 扩展名。此函数将检查文件夹是否存在,如果需要则创建它并 return Microsoft.SharePoint.Client.Folder
对象。
非常容易使用:
var webRelativeUrlToFolder = "/doc_archive/K20170409-01"
var folder = cc.Web.EnsureFolderPath(webRelativeUrlToFolder);
cc.Load(folder);
cc.ExecuteQuery();