Можно ли через API Microsoft Graph перечислить столбцы, связанные с типом контента? Например, вы можете перечислить столбцы для конкретной библиотеки документов, используя следующую конечную точку
https://graph.microsoft.com/v1.0/drives/{drive id}/list?$expand=columns
Ответ будет содержать массив доступных столбцов примерно следующего вида
"columns": [
...
{
"columnGroup": "Custom Columns",
"description": "",
"displayName": "Title",
"enforceUniqueValues": false,
"hidden": false,
"id": "fa564e0f-0c70-4ab9-b863-0177e6ddd247",
"indexed": false,
"name": "Title",
"readOnly": false,
"required": false,
"text": {
"allowMultipleLines": false,
"appendChangesToExistingText": false,
"linesForEditing": 0,
"maxLength": 255
}
},
...
Это отлично работает для библиотек документов, которые имеют только один тип контента, но я работаю с библиотеками, которые могут использовать несколько типов контента, и мне нужно иметь возможность перечислить столбцы, связанные с каждым типом контента.
Основная проблема заключается в том, что наше приложение загружает документы в SharePoint, а затем пытается обновить метаданные этих документов, задав поля в элементе списка документа, т. Е.
PATCH https://graph.microsoft.com/v1.0/drives/{drive id}/items/{item id}/listitem
{
"fields": {
"Comments": "comments",
"Title": "document title"
...
}
}
Однако список полей, которые должны обновляться нашим приложением, является динамическим, и если в этот вызов включено поле, которое не существует в столбцах библиотеки, вызов завершится ошибкой. Например, если целевой тип контента не имеет столбца комментариев, вызов вернет эту ошибку.
{
"error": {
"code": "invalidRequest",
"message": "Field 'Comments' is not recognized",
"innerError": {
"date": "2020-12-11T15:55:57",
"request-id": "35fa6322-caa8-48b8-b2bd-59e3dd4e0c93",
"client-request-id": "35fa6322-caa8-48b8-b2bd-59e3dd4e0c93"
}
}
}
Поэтому мне нужно определить, какие поля доступны, прежде чем пытаться обновить их значения, чтобы их можно было исключить из вызова.