更新SharePoint列表项目以支持多值管理元数据字段
一. 问题陈述
使用Azure Logic App更新SharePoint列表项目,以支持多值管理元数据字段。
二. 前提条件
-
Azure Logic App(在SharePoint环境中具有适当权限)。 -
SharePoint列表,字段类型为可接受多个值的分类字段(Taxonomy Field)。
三. 背景信息
使用SharePoint REST API端点,可以对SharePoint列表项执行CRUD操作。SharePoint期望请求具有标准的有效负载结构、头信息和适当的端点映射。
使用不同的方法类型可以对SharePoint列表/库执行各种操作。更新列表项时,建议使用以下头信息,方法类型为“POST”:
{
"If-Match": "*",
"X-HTTP-Method": "MERGE",
"accept": "application/json;odata=minimalmetadata",
"content-type": "application/json;odata=minimalmetadata"
}
四. 更新列表项
一般来说,更新SharePoint列表项时,需调用以下端点:
<Tenant url>/sites/<site Name>/_api/web/Lists/getbytitle('<List Name>')/items(<Item Id>)
有效负载的格式如下:
{
"<Field 1 InternalName>": <actual Value>,
"<Field 2 InternalName>": <actual Value>,
"<Field 3 InternalName>": <actual Value>
}
对于多值字段,负载格式有所不同:
{
"User type column InternalName": {
"results": [userId1, userId2] // 用户ID为整数
},
"Multi Select column InternalName": {
"results": ["value1", "value2"] // 值为字符串
}
}
支持的快照
以下是Azure Logic App中HTTP操作以更新列表项的示例快照。
五. 实际需求
假设客户有一个名为“审核列表”的SharePoint列表,其中包含分类字段,显示名称为“市场”(Market),字段类型为“分类元数据”(Taxonomy Metadata),支持多个值。
同时还有一个库“SitePages”,允许用户创建/编辑/发布页面,页面属性为“DistributionZone”,也是一个接受多个值的分类字段。
当用户在“SitePages”库中创建/更新项时,预计在“审核列表”中会生成包含页面属性详细信息的条目。
六. 实施步骤
1. 创建Azure Logic App
创建Azure Logic App并启用托管身份,以便其可以访问SharePoint站点。
2. 配置触发器
配置Logic App的触发器,例如手动触发(传递项ID),然后添加HTTP操作。
3. 配置HTTP操作以获取项详细信息
将HTTP操作的方法设置为GET,以从“SitePages”库获取匹配的项详细信息。
端点:
<Tenant url>/sites/<site Name>/_api/web/Lists/getbytitle('<SitePages>')/Items(<ItemID>)?$Select=ID,Title,DistributionZone
4. 收集DistributionZone字段的所有值
从上述HTTP操作响应中收集“DistributionZone”字段的所有值,并将其存储在Logic App的变量中。
5. 转换DistributionZone值
将“DistributionZone”值转换为单个字符串,语法为“WssId;#Term Label|Term GUID”。对“DistributionZone”值进行循环处理,使用JSON解析操作,附加所有术语集值,分隔符为“;”。
我们将WssId设置为-1,因为SharePoint会自动根据匹配的术语标签解析正确的WssID,或者在未找到时创建。
6. 获取分类字段的隐藏列内部名称
配置HTTP操作以获取审核列表中分类字段对应的隐藏列的内部名称。
端点:
<Tenant url>/sites/<site Name>/_api/web/Lists/getbytitle('<List Name>')/fields?$filter=Title eq 'Market_0'&$select=Title,InternalName
7. 配置HTTP操作以添加项目
配置HTTP操作以使用POST方法将项添加到SharePoint列表。此操作将使用隐藏字段的内部名称引用审核列表中的分类字段。
HTTP操作
有效负载:
{
"Market_0": {
"results": ["WssId;#Term Label|Term GUID"]
}
}
七. 认证和结果
在此步骤中,确保您已正确设置身份验证,以便Logic App可以成功连接到SharePoint。根据成功与否,您将获得更新后的项的结果。
通过以上步骤,您可以成功地使用Azure Logic App更新SharePoint列表项,支持多值管理元数据字段。确保在每一步中验证设置和配置,以确保一切顺利运行。