【问题标题】:Using Graph API to query SharePoint list items and expand user field使用 Graph API 查询 SharePoint 列表项并展开用户字段
【发布时间】:2019-07-07 00:06:29
【问题描述】:

我正在尝试查询一些 SP 列表项,一切正常,但我似乎无法扩展 Person 类型的自定义列。

我可以看到 createdBylastModifiedBy 扩展,甚至包括 AAD 用户 ID,这很棒,也让我认为我想要的都是可能的!

但我的是自定义列。

我正在运行它,但似乎只能获取 SP 用户列表 ID 和用户的显示名称......这两者都没有多大用处。

/items?expand=fields(select=UserLookupId,User)

理想情况下,我希望根据 createdBy 和 modifiedBy 字段获取 AAD 用户 ID,但电子邮件就足够了。
否则我能看到的唯一方法是查询User Information List(使用UserLookupId)来获取电子邮件?

谢谢

【问题讨论】:

    标签: sharepoint microsoft-graph-api sharepoint-online


    【解决方案1】:

    这似乎是正确的假设:

    否则我能看到的唯一方法就是查询用户信息列表 (使用 UserLookupId)来获取电子邮件?

    对于非系统的用户字段,确实是一条路,但是用户字段是多值还是单-重视。 如果Approvers是多值用户字段,则查询如下:

    https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?$expand=fields($select=Approvers)
    

    返回emailid 属性以及用户字段值的displayName 属性。

    而对于单值用户字段 id(可通过{userfield}LookupId 属性获得)和displayName 属性可以通过items endpoint 请求,对于示例:

    https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?$expand=fields($select=Approver,ApproverLookupId)
    

    所以,确实需要使用User Information List 来请求其他用户属性,例如:

    https://graph.microsoft.com/v1.0/sites/root/lists('User Information List')/items/{item-id}/?$expand=fields($select=Email)
    

    其中item-id 对应于用户字段查找id

    【讨论】:

    • 好的,谢谢。已经有一段时间了,没有人带来更好的东西。所以我会接受并继续这样做,希望以后会有所改善!
    【解决方案2】:

    这是我修改 Build Angular single-page apps with Microsoft Graph。在下面的示例中,我使用默认文本更改了我的 id。

    这里是 The Finished Project on thier github

    Graph Explorer 中,这工作。您可以在Microsoft Graph Explorer 进行验证。

    https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?expand=fields($select=id,Title)
    

    在应用程序的 app/graph.service.ts 中,这不起作用。即使您希望它基于图形浏览器。

    .api('/sites/{site-id}/lists/{list-id}/items?fields($select=id,Title)')
    

    更改 app/graph.service.ts api 调用工作

    .api('/sites/{site-id}/lists/{list-id}/items?')
    .expand('fields($select=id,Title)')
    

    结果如下所示:

    fields: {
        @odata.etag: ""d6f5b6ea-9f90-452d-98ba-e838f58d3359,1"", 
        Title: "IT SPECIALIST (MID)", 
        id: "20"
    }
    

    这是一个示例站点 ID:

    some.sharepoint.com,9dk062b-2e54-4e4f-b71a-cdb74f42cc44,c6cf6b0a-cc7c-41fd-a76a-ef8f97e8a22f
    

    这是一个示例列表 ID。

    8eg8c29a-5555-4cfc-bfa4-0e907488f781
    

    结束 url 中不会有任何 {}。

    【讨论】:

    • 我使用相同的 ?expand=fields(select=id,Title) 并得到 ""error": { "code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException", "message ": "表达式 \"fields(select\" 无效。"," Graph 有什么变化吗?
    猜你喜欢
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2023-01-10
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多