You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Apps:JSON函数转换集合时丢失SharePoint空值列求助

解决Power Apps中SharePoint列表空值列在JSON转换时丢失的问题

核心原因

SharePoint列表的空值字段在Power Apps中会被识别为不存在的属性,而Excel数据源会保留空字段的结构,因此使用JSON()函数转换时,SharePoint来源的空值字段会被自动丢弃。

解决方案

方法1:手动构造记录,强制保留所有字段

放弃使用ShowColumns,改为手动定义每个字段,用Coalesce()函数给空值字段设置默认值(比如空字符串或对应类型的默认值),确保每个字段都存在于记录中:

// 清空现有集合
Clear(ProfileContent);

// 手动构造包含所有目标字段的记录,空值替换为默认值
Collect(ProfileContent,
    {
        First: Coalesce(CurrentItem.First, ""),
        Last: Coalesce(CurrentItem.Last, ""),
        Middle: Coalesce(CurrentItem.Middle, ""),
        Phone: Coalesce(CurrentItem.Phone, ""),
        Class: Coalesce(CurrentItem.Class, ""),
        Score: Coalesce(CurrentItem.Score, 0), // 数字类型用0作为默认值
        Grade: Coalesce(CurrentItem.Grade, "")
    }
);

// 转换为JSON
Set(ProfileData, JSON(ProfileContent, JSONFormat.FlattenValueTables))

说明:Coalesce()会返回第一个非空值,若原字段为空则使用指定的默认值,保证每个字段都有明确值,JSON转换时不会被丢弃。

方法2:在Power Automate端补全字段

如果不想修改Power Apps的逻辑,可以在Power Automate流程中处理:

  • 当接收到Power Apps发送的JSON数据后,手动为每个需要的字段设置值,若字段不存在则用默认值填充。例如在邮件内容中:
    姓名:@{if(empty(triggerBody()?['First']), '', triggerBody()?['First'])} @{if(empty(triggerBody()?['Middle']), '', triggerBody()?['Middle'])} @{if(empty(triggerBody()?['Last']), '', triggerBody()?['Last'])}
    电话:@{if(empty(triggerBody()?['Phone']), '无', triggerBody()?['Phone'])}
    
  • 也可以用Compose动作预先构造完整的对象,再传递到邮件步骤。

方法3:用AddColumns/UpdateIf强制补全空值字段

如果仍想使用ShowColumns,可以在收集数据后,批量给空值字段赋值:

Clear(ProfileContent);
// 收集指定列
Collect(ProfileContent, ShowColumns(CurrentItem, "First", "Last", "Middle", "Phone", "Class", "Score", "Grade"));

// 给每个空值字段设置默认值
UpdateIf(ProfileContent, IsBlank(First), {First: ""});
UpdateIf(ProfileContent, IsBlank(Last), {Last: ""});
UpdateIf(ProfileContent, IsBlank(Middle), {Middle: ""});
UpdateIf(ProfileContent, IsBlank(Phone), {Phone: ""});
UpdateIf(ProfileContent, IsBlank(Class), {Class: ""});
UpdateIf(ProfileContent, IsBlank(Score), {Score: 0});
UpdateIf(ProfileContent, IsBlank(Grade), {Grade: ""});

Set(ProfileData, JSON(ProfileContent, JSONFormat.FlattenValueTables))

内容的提问来源于stack exchange,提问作者sharkbait703

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:22:39