我正在尝试使用Graph API来检索Sharepoint文档库中的文件层次结构。由于文档库存储在“驱动器”中(技术上是否正确称为OneDrive?),我使用/drives
端点来获取文件列表,如下所示:
https://graph.microsoft.com/beta/drives/{driveid}/root/children
我想从通过Sharepoint查看这些项目时从一些自定义列中获取信息。使用?expand=fields
不起作用,因为fields
仅存在于/sites
端点的listItem对象中,而不存在于driveItem
端点的/drives
对象中。如果我尝试从单个driveItem获取listItem(将图形从OneDrive遍历到Sharepoint),然后展开字段,例如
https://graph.microsoft.com/beta/drives/{driveid}/items/{driveItemId}/listItem?expand=fields
这会检索内置列(Author,DocIcon和其他一些列),但似乎无法检索自定义列。
我还尝试从/sites
端点获取文件列表,使用?expand=fields
将获取自定义列,但它从每个子文件夹获取每个文件,而不是当前文件夹路径。但我觉得应该有自己的问题。
是否可以从driveItems检索自定义列信息?
答案 0 :(得分:1)
我做了一些测试。应该做的是:
https://graph.microsoft.com/beta/drives/{driveid}/root/children?$select=id,MyCustomColumnName
但是,当我这样做时,它只返回了那个id字段。在我看来,这是图中的一个错误,因为这种类型的查询在SharePoint REST API中起作用。
如果这有帮助,您可以使用SharePoint REST api完成此操作。您的端点查询类似于:
https://{yoursite}.sharepoint.com/sites/{sitename}/_api/web/lists/(' {DocumentLibraryID}')/items?$select=id,MyCustomColumnName
还有其他方法可以进行相同的查询。
答案 1 :(得分:1)
我花了很多时间研究各种语法可能性,最终能够使用这种查询格式获取自定义库属性。这是唯一为文档库生成我的自定义/用户定义字段的字段。
https://graph.microsoft.com/v1.0/drives/insert_drive_id_here/root/children?expand=listItem
缩短结果:
{
"@odata.context": "...",
"value": [
{
"@microsoft.graph.downloadUrl": "...",
"listItem@odata.context": "...",
"listItem": {
"@odata.etag": "...",
"fields@odata.context": "...",
"fields": {
"@odata.etag": "...",
"Title": "...",
"Other_Custom_Property": "..."
}
}
}
]
}
答案 2 :(得分:0)
尝试列表端点,然后展开driveItem和fields。您现在拥有自定义列字段和驱动器项字段。
/beta/sites/[site-id]/lists/[list-id]/items?expand=driveitem,fields&filter=(fields/customColumn eq 'someValue')