Ron*_*ald 3 javascript sharepoint-online microsoft-graph-api
我已经使用 SharePoint Online 中的 Microsoft Graph 设置了一个使用数据的 React Web 应用程序,该应用程序运行良好。我可以读取和写入 SP 列表,但我找不到任何有关如何构建数据以写入“人员/组”字段的文档。
使用这些字段查询列表会产生"ManagerLookupId": "12",其中Manager是人员选取器字段名称。我可以"12"使用扩展查询字符串来解决该问题。我不知道如何使用Microsoft Graph 中的/v1.0或端点写入它/beta
将此对象发布到相关端点是有效的(对于单行文本、选择等)。
{
"fields": {
"Title": "a",
"Category": "b",
"Description": "c"
}
}
Run Code Online (Sandbox Code Playgroud)
但如果我要添加“人员选择器”字段,我不知道如何构建该数据。我尝试过电子邮件地址和 GUID,但都不起作用。看看 SP 本身是如何做的,它似乎在提交人员选择器字段时提交了这个值(已替换真实值)-
{
"Key": "i:0#.f|membership|EMAIL",
"DisplayText": "NAME",
"IsResolved": true,
"Description": "EMAIL",
"EntityType": "User",
"EntityData": {
"IsAltSecIdPresent": "False",
"Title": "POSITION",
"Email": "EMAIL",
"MobilePhone": "",
"ObjectId": "GUID",
"Department": ""
},
"MultipleMatches": [],
"ProviderName": "Tenant",
"ProviderDisplayName": "Tenant"
}
Run Code Online (Sandbox Code Playgroud)
复制此操作也无法更新列表中的“人员”字段。
我无法在 MS Graph API 网站上找到任何文档,也无法在他们的 Github 上找到类似的先前问题,所以任何帮助将不胜感激!
您可以在以下文档中找到有关此内容的一些FieldValueSet信息:
Author默认情况下不返回查找字段(如上)。相反,服务器返回AuthorLookupId引用listItem查找中的目标的“LookupId”字段(如上)。“LookupId”字段的名称是原始字段名称后跟 LookupId。
实际上,这是 SharePoint 跟踪用户方式的副作用。作为历史产物,SharePoint 维护着自己的用户数据库。虽然在某个时间点 SP 管理员与这些用户有很多接触,但今天它是一个完全自动化的过程。SPUser它只是在第一次看到经过身份验证的 AAD 用户时创建一条新记录。这些用户记录有自己的id属性。这是一个 commonINT而不是 a GUID(在你的例子中,他们id是12)。
当您更新 时ListItem,您需要使用 SharePoint 的id. 您可以将其作为单个值或数组传递:
{
"fields": {
"ManagerLookupId": 12
}
}
{
"fields": {
"ManagerLookupId": [10,11,12]
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于,无法id从 Microsoft Graph 获取此 SharePoint 用户。显然,这使得创建/更新ListItem. 为了解决这个问题,您可以使用旧的SharePoint REST API 的ensureUser端点:
http://<sitecollection>/<site>/_api/web/ensureUser(logonName)
Run Code Online (Sandbox Code Playgroud)
请记住,您还需要 SharePoint 的令牌来调用此 API。如果您使用的是 AAD v1 端点,则通常只需使用 SharePoint 资源 ( https://{tenant}.sharepoint.com) 刷新此调用的令牌,然后刷新回图形资源 ( https://graph.microsoft.com) 进行其他调用即可。
| 归档时间: |
|
| 查看次数: |
2441 次 |
| 最近记录: |