MS Graph API元数据字段更新



我正在尝试更新我的驱动器项中的自定义元数据。根据MS Graph API的文档,它说我们应该纠结于FieldValueSet类。因此,我做了以下操作:

public void updateMetadata() {
DriveItem driveItem = graphClient.sites(getSiteIdByName("sps-test")).lists(
getListFromSite("sps-test", "Shared Documents").id)
.drive().items().byId("mysupersecurid").buildRequest().expand("listItem").get();
System.out.println(driveItem.getRawObject());
FieldValueSet valueSet = driveItem.listItem.fields;
valueSet.additionalDataManager().put("Name", new JsonPrimitive("Hello"));
JsonObject rawObject = valueSet.getRawObject();

FieldValueSet result = graphClient.sites(getSiteIdByName("sps-test")).lists(
getListFromSite("sps-test", "Shared Documents").id)
.items("mysupersecureid").fields().buildRequest().patch(valueSet);
System.out.println(result.getRawObject());
}

这应该结束的过程,但我得到无效的请求异常在最后一次调用。patch方法。我得到以下错误:

{
"error": {
"code": "invalidRequest",
"message": "Field u0027idu0027 is not recognized",
"innerError": {
"date": "2021-02-01T14:19:15",
"request-id": "46e67786-b021-43cd-a48e-080c35d475e6",
"client-request-id": "f0c59880-df5e-4259-877d-0c65cb7b1aee"
}
}
}

我将创建一个新的FieldValueSet,而不使用响应中的FieldValueSet

您正在使用前一个响应中返回的FieldValueSet,其中包含id(这是唯一标识符)并在其中添加/更新值。那么你在发送FieldValueSet的补丁请求中,id不能更新。

FieldValueSet valueSet = new FieldValueSet();
valueSet.additionalDataManager().put("Name", new JsonPrimitive("Hello"));

最新更新