如何通过Document-ID获取SharePoint库文件的driveItemId?
解决方案:通过Microsoft Graph API从Document-ID获取driveItemId
方案一:利用SharePoint列表项筛选(推荐)
文档库本质是SharePoint列表,Document-ID对应的内置字段内部名称为_dlc_DocId,可直接通过列表项筛选实现精准匹配:
- 构造Graph API请求:
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{library-list-id}/items?filter=_dlc_DocId eq '{目标Document-ID}'&select=id,driveItemId,fields
{site-id}:目标SharePoint站点的ID(可通过GET https://graph.microsoft.com/v1.0/sites/{tenant-name}.sharepoint.com:/sites/{site-name}获取){library-list-id}:目标文档库对应的列表ID(可通过GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists,根据displayName匹配文档库名称后获取){目标Document-ID}:要查询的唯一Document-ID值
- 响应解析:返回的
items数组中,每个条目包含的driveItemId字段即为所需的对应文件ID。
方案二:修正搜索查询(解决原搜索方法的问题)
如果仍想使用搜索方式,需限定搜索范围并精准匹配Document-ID,避免无关结果:
GET https://graph.microsoft.com/v1.0/search/query?q=DocumentId:"{目标Document-ID}"&queryAlterations=false&filter=siteId eq '{site-id}'
- 用
DocumentId:"{目标Document-ID}"实现精准匹配,避免模糊搜索导致的不匹配结果 - 通过
filter=siteId eq '{site-id}'限定搜索范围到目标站点,减少冗余结果
权限说明
需申请以下权限之一(根据业务需求选择):
Sites.Read.All(只读权限)Sites.ReadWrite.All(读写权限)
内容的提问来源于stack exchange,提问作者Eliah Thommen
相关产品推荐
相关产品推荐

