You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CAML查询获取与Microsoft Graph匹配的SharePoint文档ID?

解决方案:获取与Microsoft Graph匹配的SharePoint文档ID

你遇到的问题核心是CSOM默认返回的Id是列表内部的自增数字ID,而UniqueId未被正确加载或使用方式不对。要获取能直接用于Microsoft Graph API的ID,需明确两个API的ID对应关系并调整CSOM代码:

1. ID对应关系说明

  • Microsoft Graph 列表项API(/sites/{site-id}/lists/{list-id}/items/{item-id}):使用CSOM中ListItem.Id(即你看到的极小数字,如3),但该API返回的是列表项元数据,需额外获取下载链接才能拿到文件内容。
  • Microsoft Graph DriveItem API(/sites/{site-id}/drives/{drive-id}/items/{item-id}):使用CSOM中ListItem.UniqueId的字符串形式(带连字符的GUID),这是直接获取文件内容的常用ID。

2. 修改后的CSOM代码

关键是在加载列表项时明确指定要获取的属性(默认加载不会包含所有字段),确保拿到UniqueId:

Web web = sp.Web;

string spdocumenturl = "/sites/MySite/Shared%20Documents/My%20Site%20Documents/MyFolder";

Microsoft.SharePoint.Client.List documentlist = web.Lists.GetByTitle("Documents");
CamlQuery query = new CamlQuery();
query.FolderServerRelativeUrl = spdocumenturl;
query.ViewXml = "<View Scope='RecursiveAll'><RowLimit>5000</RowLimit></View>";
ListItemCollection listItems = documentlist.GetItems(query);

// 明确加载需要的属性:数字ID、GUID格式的UniqueId、文件类型标识
sp.Load(listItems, items => items.Include(
    item => item.Id,
    item => item.UniqueId,
    item => item.FileSystemObjectType
));
sp.ExecuteQuery();

// 遍历处理每个项
foreach (ListItem item in listItems)
{
    if (item.FileSystemObjectType == FileSystemObjectType.File)
    {
        // 用于Graph DriveItem API的ID(与Graph返回的完全匹配)
        string graphDriveItemId = item.UniqueId.ToString();
        // 用于Graph ListItem API的ID
        string graphListItemId = item.Id.ToString();
        
        // 按需存储对应的ID即可
    }
    else if (item.FileSystemObjectType == FileSystemObjectType.Folder)
    {
        // 文件夹的Graph DriveItem ID同样使用UniqueId的字符串形式
        string graphFolderId = item.UniqueId.ToString();
    }
}

3. 验证与使用

  • 存储graphDriveItemId后,可通过以下Graph API路径获取文件内容:
    GET /sites/{site-id}/drives/{drive-id}/items/{graphDriveItemId}/content
    
    其中site-id为CSOM中web.Id.ToString(),drive-id为文档库的ID(documentlist.Id.ToString())。

内容的提问来源于stack exchange,提问作者TheIronCheek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:42:14