从共享点获取元数据(列信息)

Getting metada (column information) from sharepoint

我正在使用 Java (https://github.com/microsoftgraph/msgraph-sdk-java) 的 Microsoft Graph SDK 从 Sharepoint 中提取文档。 除了 GraphServiceClient 提供的 "standard" 之外,是否还有可能提取有关文档的信息?

GraphServiceClient 的意思是我可以获得 createdBy、description、lastModifiedDateTime、webUrl... 并且我试图从中提取可以在 Sharepoint 中额外定义的信息 - 有可能进行自定义 fields/columns 用于文档并为每个文档设置值。

我想提取额外的 "metadata"。我该怎么做?

尝试将 $expand 添加到您的查询中。

items = client
  .users(mailbox)
  .drives(drive-id)
  .items(att.id)
  .buildRequest(Lists.newArrayList(new QueryOption("$expand","fields"))) 
  .get();

注:

Graph 无法检索所有自定义元数据 API。

短:

/items?expand=fields

我的实际测试查询:

https://graph.microsoft.com/v1.0/sites/{site id}/drives/{drive-id}/list/items?expand=fields

响应(MyTestMetadata1 是我的测试元数据):

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('site id')/drives('drive id')/list/items",
    "value": [
        {
            "@odata.etag": "\"c800e34f-6ee4-4d46-8a56-2811078509e7,2\"",
            "createdDateTime": "2018-10-25T04:20:05Z",
            "eTag": "\"c800e34f-6ee4-4d46-8a56-2811078509e7,2\"",
            "id": "4",
            "lastModifiedDateTime": "2018-10-25T04:20:07Z",
            "webUrl": "https://xxx.sharepoint.com/sites/Test/Shared%20Documents/CenterText.js",
            "createdBy": {
                "user": {
                    "email": "xxx@xxx.onmicrosoft.com",
                    "id": "f5d39dec-1642-48b2-90ee-1da477f61a1c",
                    "displayName": "xxx"
                }
            },
            "lastModifiedBy": {
                "user": {
                    "email": "xxx@xxx.onmicrosoft.com",
                    "id": "f5d39dec-1642-48b2-90ee-1da477f61a1c",
                    "displayName": "xxx"
                }
            },
            "parentReference": {
                "id": "3638238d-a591-4105-b6c7-a9251be75d93"
            },
            "contentType": {
                "id": "0x0101007264AD3105D388488F4C729B0CC03CCF"
            },
            "fields@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites('site-id')/drives('drive-id')/list/items('4')/fields/$entity",
            "fields": {
                "@odata.etag": "\"c800e34f-6ee4-4d46-8a56-2811078509e7,2\"",
                "Modified": "2018-10-25T04:20:07Z",
                "FileLeafRef": "CenterText.js",
                "MyTestMetadata1": "OK",
                "id": "4",
                "ContentType": "Document",
                "Created": "2018-10-25T04:20:05Z",
                "AuthorLookupId": "6",
                "EditorLookupId": "6",
                "_CheckinComment": "",
                "LinkFilenameNoMenu": "CenterText.js",
                "LinkFilename": "CenterText.js",
                "DocIcon": "js",
                "FileSizeDisplay": "1209",
                "ItemChildCount": "0",
                "FolderChildCount": "0",
                "_ComplianceFlags": "",
                "_ComplianceTag": "",
                "_ComplianceTagWrittenTime": "",
                "_ComplianceTagUserId": "",
                "_CommentCount": "",
                "_LikeCount": "",
                "Edit": "0",
                "_UIVersionString": "1.0",
                "ParentVersionStringLookupId": "4",
                "ParentLeafNameLookupId": "4"
            }
        }
    ]
}

基本上,DriveItem 中关于共享点上的文件的信息较少。 因此,使用 ListItem 获取为文档定义的所有内容...

IGraphServiceClient graphClient = GraphServiceClient.
                                  builder().
                                  authenticationProvider(authenticator).
                                  logger(new Slf4jGraphLogger(logger)).
                                  buildClient();

ListItem fileMetadata = 
           graphClient.
           drives(driveId).
           items(item.id).
           listItem().
           buildRequest().get();

那里的文件元数据 "fields" 存储了所有元数据,包括自定义元数据和常用元数据...

我对单个文档的测试查询是:

  https://graph.microsoft.com/v1.0/sites/{site id}/drives/{drive-id}/items/{item-id}/listItem

  https://graph.microsoft.com/v1.0/sites/{site id}/drives/{drive-id}/items/{item-id}/listItem/fields

回复和之前的回答一样