Использование Graph API для запроса элементов списка SharePoint и расширения пользовательского поля - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь запросить некоторые элементы списка SP, все работает нормально, за исключением того, что я не могу развернуть пользовательский столбец типа Person.

Я вижу createdBy и lastModifiedBy расширен и даже включает в себя идентификатор пользователя AAD, который великолепен и заставляет меня думать, что то, что я хочу, возможно!

Но у меня есть пользовательский столбец.

Я запускаю это иможет показаться, что он получает только идентификатор списка пользователей SP и отображаемое имя пользователя ... ни один из них не очень полезен.

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

В идеале я хотел бы получить идентификатор пользователя AAD в соответствии с createBy иifiedByByполе, но электронной почты будет достаточно.
В противном случае единственный способ, который я вижу, - запросить User Information List (используя UserLookupId), чтобы получить письмо?

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Это был мой опыт модификации Сборки Angular одностраничных приложений с Microsoft Graph .В приведенных ниже примерах я изменил свой идентификатор с текстом по умолчанию.

Вот Завершенный проект на их github

В Обозреватель графиков этот работал .Вы можете проверить это в 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"
}

Вот пример идентификатора сайта:

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

Вот пример списка идентификаторов.

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

Конечный URL не будет содержать {}.

0 голосов
/ 13 февраля 2019

Это правильное предположение:

В противном случае я вижу только один способ - запросить список информации о пользователе (используя UserLookupId), чтобы получить электронное письмо?

для несистемных пользовательских полей, это действительно путь, но есть некоторые различия, независимо от того, является ли пользовательское поле многозначным или однозначным .Если Approvers является многозначным пользовательским полем, то следующий запрос:

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

возвращает свойства email и id вместе со свойством displayName для значения пользовательского поля.

В то время как для однозначного пользовательского поля only id (доступно через свойство {userfield}LookupId) и displayName свойства можно запрашивать через элементы конечная точка , например:

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 соответствует идентификатор поиска поля пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...