Microsoft Graph API 未从列表返回自定义列
Microsoft Graph API not returning custom column from list
在 VB.Net 工作,使用 Microsoft.Graph api 与共享点通信。
我在共享点网站上有一个列表。
假设:
列表名称:ListTestName
列:ListColumnTest1、ListColumnTest2、ListColumnTest3
Dim queryFields As List(Of QueryOption) = New List(Of QueryOption) From {New QueryOption("$expand", "fields")}
Dim items As IListItemsCollectionPage = Await GraphClient.Sites(sharepointSessionId).Lists("ListTestName").Items.Request(queryFields).GetAsync()
这是我必须获取列表并尝试获取所有字段(列)的代码,但是当我查看“Items”变量中的字段时,我没有看到任何我拥有的字段添加到列表中。我只看到共享点字段,例如“标题”或“Id”
我真的不明白为什么这不起作用。
即使我通过 graph-explorer 网站 (https://developer.microsoft.com/en-us/graph/graph-explorer) 查看时使用:
GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields
我没有看到我的自定义列但是,如果我尝试直接过滤到这样的列之一:
GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields(select=ListColumnTest1)
这似乎确实返回了我的自定义字段。
因此我尝试添加到查询字段 {New QueryOption("$expand", "fields(select=ListColumnTest1")} 这在我调用请求时崩溃了。
编辑:我问这个问题有点不对,我会发布第二个更符合我需要的问题。但是,下面的问题被标记为正确,因为他们的解决方案是我所问问题的正确解决方案。 :)
我会避免创建 QueryOption。尝试使用 Expand 和 Select 方法。
示例(C#...抱歉我不熟悉 VB 但我希望您可以轻松重写它):
await GraphClient.client.Sites[sharepointSessionId].Lists["ListTestName"].Items.Request()
.Expand(x => new
{
ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
})
.Select(x => new
{
ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
})
.GetAsync();
你试过这个端点了吗?
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}?expand=columns,items(expand=fields)
我可以使用此端点获取自定义列。
更新:
IListColumnsCollectionPage columns = graphClient.Sites["b57886ef-vvvv-4d56-ad29-27266638ac3b,b62d1450-vvvv-vvvv-84a3-f6600fd6cc14"].Lists["538191ae-7802-43b5-90ec-c566b4c954b3"].Columns.Request().GetAsync().Result;
在 VB.Net 工作,使用 Microsoft.Graph api 与共享点通信。
我在共享点网站上有一个列表。
假设:
列表名称:ListTestName
列:ListColumnTest1、ListColumnTest2、ListColumnTest3
Dim queryFields As List(Of QueryOption) = New List(Of QueryOption) From {New QueryOption("$expand", "fields")}
Dim items As IListItemsCollectionPage = Await GraphClient.Sites(sharepointSessionId).Lists("ListTestName").Items.Request(queryFields).GetAsync()
这是我必须获取列表并尝试获取所有字段(列)的代码,但是当我查看“Items”变量中的字段时,我没有看到任何我拥有的字段添加到列表中。我只看到共享点字段,例如“标题”或“Id”
我真的不明白为什么这不起作用。
即使我通过 graph-explorer 网站 (https://developer.microsoft.com/en-us/graph/graph-explorer) 查看时使用:
GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields
我没有看到我的自定义列但是,如果我尝试直接过滤到这样的列之一:
GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields(select=ListColumnTest1)
这似乎确实返回了我的自定义字段。
因此我尝试添加到查询字段 {New QueryOption("$expand", "fields(select=ListColumnTest1")} 这在我调用请求时崩溃了。
编辑:我问这个问题有点不对,我会发布第二个更符合我需要的问题。但是,下面的问题被标记为正确,因为他们的解决方案是我所问问题的正确解决方案。 :)
我会避免创建 QueryOption。尝试使用 Expand 和 Select 方法。
示例(C#...抱歉我不熟悉 VB 但我希望您可以轻松重写它):
await GraphClient.client.Sites[sharepointSessionId].Lists["ListTestName"].Items.Request()
.Expand(x => new
{
ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
})
.Select(x => new
{
ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
})
.GetAsync();
你试过这个端点了吗?
GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}?expand=columns,items(expand=fields)
我可以使用此端点获取自定义列。
更新:
IListColumnsCollectionPage columns = graphClient.Sites["b57886ef-vvvv-4d56-ad29-27266638ac3b,b62d1450-vvvv-vvvv-84a3-f6600fd6cc14"].Lists["538191ae-7802-43b5-90ec-c566b4c954b3"].Columns.Request().GetAsync().Result;