通过 Microsoft Graph 导航到存储在 Sharepoint 上的工作簿
Navigating to a workbook stored on Sharepoint via Microsoft Graph
我正在尝试操作存储在我们位于
的 Intranet Sharepoint 服务器上的 Excel 工作簿
https://xyz.ourserver.com/sites/site/list/subdir/Test.xlsx
这是我目前使用的 API(我想/希望这可以做得更容易,但目前我只是四处闲逛):
var site = await graphClient
.Sites["xyz.ourserver.com"]
.SiteWithPath("sites/site")
.Request()
.GetAsync();
var list = await graphClient
.Sites[site.Id]
.Lists["list"]
.Request()
.GetAsync();
var driveItems = await graphClient
.Sites[site.Id]
.Lists[list.Id]
.Drive
.Root
.ItemWithPath("/subdir")
.Children
.Request()
.GetAsync();
步骤 1 + 2(获取站点和列表)工作正常,但步骤 3 抛出 "itemNotFound Message: The resource could not be found."
当然,我尝试了很多变体。此外,此替代步骤 3 returns 一个空集合:
var children = await graphClient
.Sites[site.Id]
.Lists[list.Id]
.Drive
.Root
.Children
.Request()
.GetAsync();
"subdir" 肯定存在(test.xlsx 也是如此)。我也很确定列表没问题,它有 WebUrl 属性 "https://xyz.ourserver.com/sites/site/list".
这是一个权限问题。当我比较(看起来不错的)Graph Explorer json 结果和应用程序接收的(空)json 结果(我在 Fiddler 中检查过)时,这变得很明显。
我使用这个图形教程 (https://github.com/microsoftgraph/msgraph-training-aspnetmvcapp) 来探索图形 API。应用程序权限已经正确设置,但我不知道 PrivateSettings.config 也需要额外的 "ida:AppScopes"(在我的例子中:value="User.Read Calendars.Read Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All Sites.ReadWrite.All")。
使用这些设置,此代码有效:
var drive = await graphClient
.Sites["rwe.sharepoint.com"]
.SiteWithPath("sites/site")
.Lists["list"]
.Drive
.Request()
.GetAsync();
var driveItems = await graphClient
.Drives[drive.Id]
.Root
.ItemWithPath("subdir")
.Children
.Request()
.GetAsync();
我正在尝试操作存储在我们位于
的 Intranet Sharepoint 服务器上的 Excel 工作簿https://xyz.ourserver.com/sites/site/list/subdir/Test.xlsx
这是我目前使用的 API(我想/希望这可以做得更容易,但目前我只是四处闲逛):
var site = await graphClient
.Sites["xyz.ourserver.com"]
.SiteWithPath("sites/site")
.Request()
.GetAsync();
var list = await graphClient
.Sites[site.Id]
.Lists["list"]
.Request()
.GetAsync();
var driveItems = await graphClient
.Sites[site.Id]
.Lists[list.Id]
.Drive
.Root
.ItemWithPath("/subdir")
.Children
.Request()
.GetAsync();
步骤 1 + 2(获取站点和列表)工作正常,但步骤 3 抛出 "itemNotFound Message: The resource could not be found."
当然,我尝试了很多变体。此外,此替代步骤 3 returns 一个空集合:
var children = await graphClient
.Sites[site.Id]
.Lists[list.Id]
.Drive
.Root
.Children
.Request()
.GetAsync();
"subdir" 肯定存在(test.xlsx 也是如此)。我也很确定列表没问题,它有 WebUrl 属性 "https://xyz.ourserver.com/sites/site/list".
这是一个权限问题。当我比较(看起来不错的)Graph Explorer json 结果和应用程序接收的(空)json 结果(我在 Fiddler 中检查过)时,这变得很明显。
我使用这个图形教程 (https://github.com/microsoftgraph/msgraph-training-aspnetmvcapp) 来探索图形 API。应用程序权限已经正确设置,但我不知道 PrivateSettings.config 也需要额外的 "ida:AppScopes"(在我的例子中:value="User.Read Calendars.Read Files.Read Files.ReadWrite Files.Read.All Files.ReadWrite.All Sites.Read.All Sites.ReadWrite.All")。
使用这些设置,此代码有效:
var drive = await graphClient
.Sites["rwe.sharepoint.com"]
.SiteWithPath("sites/site")
.Lists["list"]
.Drive
.Request()
.GetAsync();
var driveItems = await graphClient
.Drives[drive.Id]
.Root
.ItemWithPath("subdir")
.Children
.Request()
.GetAsync();