【问题标题】:Office 365 MyFiles API - How to get the direct children in the root of the One Drive folderOffice 365 MyFiles API - 如何在 One Drive 文件夹的根目录中获取直接子项
【发布时间】:2014-10-15 04:47:38
【问题描述】:

我正在尝试使用Office 365 API tool for Visual Studio 2013 (update 3) 的新夏季版本。它工作正常,除了我遇到的一个问题,也可以称为缺少功能。

我发现没有合理的方法可以使用新添加的 SharePointClient 库从我的 One Drive for business 文档库中检索根文件夹的直接子文件夹。

SharePointClient.Files 的 API 调用将检索整个文档库中的所有文件和文件夹,包括子文件夹。因此,为了只获得直接子项,我必须翻阅所有文档和文件夹并分析它们的 URL。这对于我的应用场景是不可接受的。对于子文件夹,我可以获得这样的直接子文件夹:SharePointClient.Files["<folder_id>"].ToFolder().Children 这是我需要的,但它不能应用于根文件夹。

我尝试直接使用 REST API,类似地,请求 GET ../_api/files 将检索默认文档库中的所有文件和文件夹,但我发现没有简单的方法来仅列出根的直接子级.也没有方便的方法来获取SharePointClient.Files 自动使用的默认文档库的路径或 GUID。 解析 REST API 调用的结果 XML,我可能会得到默认文档库的 GUID,这将让我使用不同的 REST API 来分别列出根文件夹的文件和文件夹,但这些调用会产生不同的 XML 架构SharePointClient 使用的那个。这意味着要仅获取根的直接子级,我必须重新实现整个 SharePointClient 库。

如果有人有好的建议,我将非常感谢。

【问题讨论】:

  • 此问题已在 Office 365 API 的最新版本中得到解决

标签: api office365


【解决方案1】:

我刚刚遇到了同样的问题 - 希望这将在 api 工具的发布版本之前得到解决。这是我为仅获取根文件夹内容所做的工作:

[Create your spClient = SharePointClient]
var allFiles = await spClient.Files.ExecuteAsync();
var rootFiles = allFiles.CurrentPage.Where(i => !i.Id.Contains("/"));

您丢失了 IPagedCollection 包装器,并且您可能需要获得比“CurrentPage”更多的信息才能查看所有文件,但这是我找到的最佳解决方法。然后我可以为您提供上面提到的“ToFolder()”方法来列出子文件夹的内容。

【讨论】:

  • 你不会碰巧知道如何通过 id await spClient.Files.GetById("folder_id").ToFolder().ExecuteAsync() 获取文件夹对象吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多