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

通过Microsoft Graph访问SharePoint Excel工作簿遇资源找不到问题

解决Microsoft Graph API访问SharePoint文档库子目录报错的问题

你遇到的“找不到资源”或返回空集合的问题,大概率是路径解析或API调用方式的细节问题,我来帮你梳理可能的修复方案:

可能的问题点及对应解决步骤

1. 优化站点获取的路径写法

你当前用SiteWithPath拼接站点的方式,可能存在路径解析的潜在问题。可以直接使用站点的完整相对路径来获取站点对象,写法更简洁也更可靠:

// 直接传入站点的完整路径,替代原SiteWithPath的拼接逻辑
var site = await graphClient
    .Sites["xyz.ourserver.com/sites/site"]
    .Request()
    .GetAsync();

2. 修正子目录的路径格式

你在ItemWithPath("/subdir")中使用了开头的斜杠,这是关键错误——ItemWithPath的参数需要是相对于Drive根目录的相对路径,不需要开头的斜杠。修改后的代码如下:

var driveItems = await graphClient
    .Sites[site.Id]
    .Lists[list.Id]
    .Drive
    .Root
    .ItemWithPath("subdir") // 去掉开头的/,使用相对路径
    .Children
    .Request()
    .GetAsync();

另外,直接调用Root.Children返回空是正常的,因为你的文件都存放在subdir子文件夹里,根目录本身没有直接的文件/文件夹。

3. 直接验证目标Excel文件的访问

你可以跳过获取子目录的步骤,直接尝试访问Test.xlsx文件,快速验证路径和权限是否正常:

var targetExcel = await graphClient
    .Sites[site.Id]
    .Lists[list.Id]
    .Drive
    .Root
    .ItemWithPath("subdir/Test.xlsx")
    .Request()
    .GetAsync();

如果这个请求成功,说明路径和权限都没问题,只是之前的子目录访问写法有误。

4. 确认权限配置

请检查你的Graph API身份(应用或登录用户)是否拥有Files.Read或Files.ReadWrite权限,并且权限范围覆盖了目标站点的文档库。内网SharePoint的权限可能存在继承限制,要确保当前身份确实能访问subdir和Test.xlsx。

额外说明

如果你的列表是普通业务列表(非文档库类型),那它本身没有Drive属性——但从你的描述来看,这个列表是文档库(包含文件和子目录),所以这个情况可以排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:34:05