Graph API列表项筛选:如何按子文件夹过滤指定自定义列文档
问题解决方法
错误原因
你之前使用parentReference/Id eq 'xxxxxxx'筛选报错,是因为Graph API的列表items端点不支持直接通过parentReference/Id来筛选父文件夹。列表项的parentReference属性对应的是DriveItem的引用,而非列表项层面的父文件夹ID,直接在$filter中使用该路径会触发处理异常。
可行方案
方案1:利用列表项的parentFolderId属性筛选
SharePoint列表中的每个项(包括文件夹)都自带parentFolderId属性,指向其父文件夹对应的列表项ID。你可以按以下步骤操作:
- 先获取目标子文件夹
Folder_B的列表项ID:GET sites/<site_id>/lists/<list_id>/items?$filter=fields/Title eq 'Folder_B'&select=id - 使用获取到的ID,结合自定义列筛选条件查询:
GET sites/<site_id>/lists/<list_id>/items?$expand=fields&$filter=fields/Sent eq null and parentFolderId eq '<folder_b_list_item_id>'
方案2:通过Drive端点直接查询文件夹下的项
SharePoint文档库列表对应一个Drive,你可以直接定位到Folder_B的DriveItem,再查询其下的子项:
- 获取
Folder_B的DriveItem ID(可以通过列表项的driveItem/id属性获取):GET sites/<site_id>/lists/<list_id>/items?$filter=fields/Title eq 'Folder_B'&select=driveItem/id - 查询该文件夹下符合条件的文档(
<drive_id>可通过GET sites/<site_id>/lists/<list_id>/drive获取):GET sites/<site_id>/drives/<drive_id>/items/<folder_b_drive_id>/children?$expand=fields&$filter=fields/Sent eq null
内容的提问来源于stack exchange,提问作者Anirudh Sundaram
相关产品推荐
相关产品推荐

