MS Graph SDK .NET 使用 documentLibrary 模板查询所有列表

MS Graph SDK .NET Query all list with documentLibrary template

借助适用于 .NET 的 Microsoft Graph SDK,我想枚举我的根站点(例如 http://mydomain.sharepoint.com)中的所有文档库,并针对其中的每一个,枚举它们的列定义。

因为我需要这些列,所以我不能使用查询“/sites/{site-id}/drives”,因为它会 return 没有任何列的驱动器对象。 所以我发现执行此操作的唯一方法是根据 API 参考查询所有列表,并将模板 属性 设置为 'documentLibrary' 的过滤器:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/list

在图形资源管理器中,适当的查询似乎是:"https://graph.microsoft.com/v1.0/sites/root/lists?$filter=list/template eq 'documentLibrary'" 但它发回了一个错误(同样没有 'around documentLibrary)。但是我没有找到任何方法来做到这一点,无论是使用 .NET SDK 还是图​​形浏览器。

欢迎任何帮助,提前致谢

C# Method to request lists with the template filter

SharePoint 列表中的图表 API 不支持过滤或排序结果。当 Microsoft Graph 看到它不期望的查询参数时,它会简单地忽略未知的筛选参数并 return 向我们提供未筛选的结果;或者只是 return none 支持的提示。 The list api supports the $expand, $select OData query parameters to customize the response

With select and expand statements, you can retrieve list metadata, column definitions, and list items in a single request.

而当前可用的 documentation 只是说明:

Support for $filter operators varies across Microsoft Graph APIs.

变化一词是指并非所有产品都完全支持这些选项。

因此,如果您请求 v1.0/sites/root/lists?$filter=list/template eq 'documentLibrary' 您将收到以下响应消息:

"message": "The provided filter statement is not supported"

你需要改变你的设计。同时,您可以在 User Voice 中对现有功能请求进行投票或提交新的功能请求。