PowerApps集合关联SharePoint列表查找及按邮箱去重拼接数据咨询
PowerApps实现方案
步骤1:生成带SharePoint关联字段的初始集合
首先从原始扫描集合的每行文本中提取RITM唯一值,再关联SharePoint列表Spiderfood的对应记录,映射生成要求的字段:
ClearCollect( TempCollection, Filter( AddColumns( // 遍历原始扫描集合,先过滤空行 Filter(ScanDataCollection, !IsBlank(Trim(Result))), // 提取RITM开头的唯一编码 "ExtractedRITM", Match(Result, "RITM\d+").FullMatch, // 关联SharePoint列表匹配对应记录 "SPRecord", LookUp(Spiderfood, RITM = ExtractedRITM), // 生成ITEMLIST字段 "ITEMLIST", $"<li><strong>{SPRecord.REQUEST} - {ExtractedRITM} - {SPRecord.ITEM_DESCRIPTION}</strong></li>", // 映射其他业务字段 "CUSTOMERNAME", SPRecord.CUSTOMER_NAME, "CUSTOMEREMAIL", SPRecord.CUSTOMER_NT, "MANAGERNAME", SPRecord.MANAGER_NAME, "MANAGEREMAIL", SPRecord.MANAGER_NT ), // 过滤匹配不到SharePoint记录的无效行 !IsBlank(SPRecord) ) );
若你的
CUSTOMER_NT/MANAGER_NT存储的是邮箱前缀,可自行拼接邮箱后缀,示例:SPRecord.CUSTOMER_NT & "@yourcompany.com"
步骤2:按客户邮箱去重并拼接ITEMLIST
使用GroupBy按邮箱分组,拼接同一邮箱下所有ITEMLIST内容,最终生成每个邮箱仅一条记录的目标集合:
ClearCollect( FinalCollection, AddColumns( // 按客户邮箱分组 GroupBy(TempCollection, "CUSTOMEREMAIL", "SameEmailGroup"), // 取分组第一条的固定信息(同一邮箱对应的客户、经理信息一致) "CUSTOMERNAME", First(SameEmailGroup).CUSTOMERNAME, "MANAGERNAME", First(SameEmailGroup).MANAGERNAME, "MANAGEREMAIL", First(SameEmailGroup).MANAGEREMAIL, // 拼接该邮箱下所有ITEMLIST,如需完整HTML列表可外层包裹<ul>标签 "ITEMLIST", Concat(SameEmailGroup, ITEMLIST) ) );
注意事项
- 若扫描的原始文本存在格式异常的行,可在提取ExtractedRITM后增加判断逻辑过滤无效值
- 若SharePoint列表的字段命名和示例不一致,直接替换代码中对应的字段名即可
- 若ITEMLIST需要完整的HTML列表结构,可将拼接逻辑修改为:
$"<ul>{Concat(SameEmailGroup, ITEMLIST)}</ul>"
内容的提问来源于stack exchange,提问作者Edward Martin III
相关产品推荐
相关产品推荐

