#microsoft-graph-api
#microsoft-graph-api
Вопрос:
У меня есть файл Excel с именем «demo.xlsx » загружено в корневую папку onedrive пользователя A. Этот файл содержит таблицу с именем «EmployeeTable». Я хочу войти в свое приложение как другой пользователь — пользователь «B» и прочитать данные из этой таблицы.
Я попытался войти в систему как пользователь B и получить доступ к данным с помощью https://graph.microsoft.com/v1.0/users/8e92a7895e495d6623/drive/root:/demo.xlsx:/workbook/tables(‘EmployeeTable’)/rows
здесь 8e92a7895e495d6623 — идентификатор пользователя A. Но я получаю следующую ошибку:
statusCode: 404,
code: "itemNotFound",
body."message":"Item does not exist"
Я попытался поделиться файлом с пользователем B, войдя в onedrive как пользователь A и используя опцию «поделиться», но я все еще получаю вышеуказанную ошибку.
Когда я вхожу в свое приложение как пользователь A и использую тот же URI, что и упомянутый выше, я могу правильно извлечь данные.
Может кто-нибудь подсказать мне, как прочитать файл Excel из папки onedrive другого пользователя? Я хочу иметь возможность хранить этот файл Excel в общей области, например, в папке onedrive пользователя, и иметь возможность считывать его несколькими пользователями.
Примечание: приложение, которое я создал, основано на https://github.com/microsoftgraph/angular-excelstarter-sample
Ответ №1:
Если пользователь A совместно использует файл с пользователем B, а пользователь B в данный момент зарегистрирован в приложении, вызовите конечную точку
https://graph.microsoft.com/v1.0/me/drive/sharedWithMe
Ответ будет содержать все файлы, которыми поделился пользователь B. Найдите нужный вам файл. Ответ должен содержать remoteItem
узел с parentReference
дочерним узлом.
"@odata.type": "#microsoft.graph.driveItem",
"createdDateTime": "2021-01-05T09:51:23Z",
"id": "01BDYTYLL573DF4J3A2JG3WPFKMZLLBPQD",
...
"remoteItem": {
"id": "01BDYTYLL573DF4J3A2JG3WPFKMZLLBPQD",
"parentReference": {
"driveId": "b!RdjejBSERkqd6KyrlECzSlClLPMHvAxIle01z5BIuc0OlAR_j4bQQ5j8LT1dXapM",
"driveType": "business",
"id": "01BDYTYLN6Y2GOVW7725BZO354PWSELRRZ"
},
....
Используйте driveId
и удаленный элемент id
и вызывайте эту конечную точку для доступа к данным
https://graph.microsoft.com/v1.0/drives/{driveId}/items/{id}/workbook/tables('EmployeeTable')/rows
Комментарии:
1. Спасибо за ваш ответ. Я попытался войти в свое приложение как пользователь B и получить доступ к graph.microsoft.com/v1.0/me/drive /… URI, но это возвращает пустой ответ, хотя пользователь A предоставил общий доступ к файлу пользователю B ` { «@odata.context»: » graph.microsoft.com/v1.0 /$метаданные#Коллекция (элемент привода) «, «значение»: [] } ` Мне пришлось добавить allowexternal=true к URI, поскольку оба пользователя находятся в разных организациях. Какие-нибудь советы о том, как решить эту проблему?