宜搭平台通过AI表格同步到表单时,成员、空字段出现问题

阿里云服务器

在宜搭平台中,通过 AI 表格(或智能表格) 同步数据到 普通表单/流程表单 时,遇到 “成员字段”“空字段” 问题是非常常见的。这通常是因为两种组件的数据存储格式不一致,或者同步规则配置不够精细导致的。

以下是针对这两个问题的详细排查步骤和解决方案:

问题一:成员字段(Member)同步失败或显示异常

原因分析:

  • 数据格式不匹配

    • AI 表格/智能表格中的成员列,存储的可能是“姓名”(字符串)或“用户 ID”(字符串)。

    • 表单中的成员组件,严格要求存储格式为 {"userId": "xxx", "name": "xxx"} 的对象结构 或者特定的 用户 ID 字符串

    • 如果直接同步“姓名”,表单无法识别该用户,导致显示为空、显示为文本而非头像,或报错。

  • 权限问题:同步账号没有权限读取目标用户的详细信息。

✅ 解决方案:

方法 A:使用“业务关联规则”进行字段映射转换(推荐)

不要直接一对一映射,而是通过规则进行转换。

  1. 进入 集成&自动化 (或表单设置中的 业务关联规则)。

  2. 新建一个规则:当 AI 表格新增/修改数据时 -> 创建/更新表单数据。

  3. 字段映射 环节,点击成员字段右侧的 公式/函数图标(而不是直接拖拽字段)。

  4. 使用查找函数

    • 如果 AI 表格存的是姓名:使用 getUserIdByName() 类似逻辑(宜搭目前主要通过 数据源查询 实现)。

    • 更稳妥的做法:确保 AI 表格中存储的是 工号用户 ID (userId)。

    • 在映射时,直接使用 ID 字段 映射到表单的成员字段。宜搭的成员组件通常能自动识别纯 userId 字符串并转换为成员对象。

  5. 检查数据类型:确保 AI 表格里的该列属性设置为“成员”或“文本”(存 ID),不要存复杂的 JSON 对象。

方法 B:检查 AI 表格的列类型

  • 进入 AI 表格设计页。

  • 确认该列的类型是否已设置为 “成员”

    • 如果是“文本”类型且存的是姓名,同步必败。请改为“成员”类型,并重新录入数据(让系统写入标准的 userId)。

    • 如果是“成员”类型,尝试在同步配置中,将该字段映射方式改为 “引用值”“ID”(如果有此选项)。

方法 C:使用自定义代码 (JS) 处理 (高级)

如果上述方法无效,可以在集成的 “执行前/后处理”“自定义代码” 节点中编写 JS:

// 伪代码示例:将姓名转换为标准成员对象
export async function onInvoke(context) {
  const sourceData = context.data; // 获取 AI 表格数据
  const userName = sourceData['member_name']; // 假设存的是姓名
  
  // 调用宜搭内置 API 查询用户 ID (需根据实际 SDK 调整)
  // 注意:宜搭低代码界面通常不支持直接调底层用户接口,建议尽量用 ID 映射
  // 如果必须用姓名,确保表格列本身就是成员类型,直接取 value.userId
  
  return {
    target_form_member: { 
      userId: sourceData['member_id'], // 确保传的是 ID
      name: userName 
    }
  };
}

注:低代码配置中,最核心的原则是 传 ID 不传姓名


问题二:空字段同步出错或覆盖原有数据

原因分析:

  • 默认覆盖逻辑:默认的同步规则通常是“全量覆盖”。如果 AI 表格中某字段为空(null/undefined),同步到表单时,会把表单里原本有的值清空

  • 数据类型冲突:AI 表格的空值可能是 null,而表单期望的是 "" (空字符串) 或 0,导致校验失败。

  • 必填项校验:如果表单中该字段设为“必填”,而 AI 表格传了空值,会导致同步任务报错失败。

✅ 解决方案:

方法 A:配置“仅同步非空字段” (关键)

在配置同步规则(集成&自动化 / 业务关联规则)时,寻找 “高级设置”“更新策略”

  1. 找到 “字段更新策略”“空值处理” 选项。

  2. 选择 “仅更新有值的字段”“忽略空值” (Skip Null Values)。

    • 这样,如果 AI 表格中某列为空,系统将跳过该字段,保留表单中原有的数据,而不是将其清空。

  3. 如果没有此全局选项:您需要对每个可能为空的字段单独判断(见方法 B)。

方法 B:使用公式/条件判断进行映射

在字段映射时,不要直接连线,而是使用 公式

  1. 点击目标字段的映射输入框,选择 “公式”

  2. 编写逻辑:IF(ISBLANK(源字段), 目标字段原值, 源字段)

    • 若目标字段有默认值:确保表单设计中设置了默认值。

    • 若目标字段允许为空:直接映射即可,但需检查是否触发了必填校验。

    • 注意:在“创建数据”动作中无法获取“目标字段原值”。此方法主要适用于 “更新数据” 动作。

    • 如果是 “创建数据” 且源字段为空:

方法 C:检查表单的“必填”属性

  • 进入目标表单的设计器。

  • 检查报错的字段是否开启了 “必填”

  • 如果业务上允许该字段为空,请关闭必填

  • 如果业务上必须必填,则需要在 AI 表格端确保数据完整,或在同步流程中加入 “条件分支”:只有当源字段不为空时,才执行同步/更新动作。


🚀 综合排查清单 (Checklist)

请按顺序执行以下操作:

  1. 检查源数据格式

    • 打开 AI 表格,查看“成员”列。点击一个单元格,看它的真实值是 姓名 还是 ID

    • 修正:如果是姓名,请在 AI 表格中将列类型改为“成员”,或增加一列专门存“用户 ID”。

  2. 检查同步动作类型

    • 你是选的是 “创建数据” 还是 “更新数据”

    • 如果是更新,务必开启 “忽略空值” 策略,防止覆盖原有数据。

  3. 检查目标表单约束

    • 目标字段是否设了“必填”?如果是,空值同步必败。

    • 目标字段是否有“唯一性”校验?

  4. 查看运行日志

    • Invalid member format: 成员格式不对(解决:传 ID)。

    • Field xxx is required: 必填项为空(解决:关必填或补数据)。

    • Type mismatch: 类型不匹配(解决:检查数字/文本/日期格式)。

    • 进入 集成&自动化 -> 运行记录

    • 点击失败的那条记录,查看 “错误详情”

    • 常见错误提示:

💡 最佳实践建议

  • 成员字段:在所有系统集成中,永远使用 userId (用户 ID) 进行传输,不要在传输层使用姓名。姓名仅用于展示。

  • 空值处理:在涉及“更新”操作时,始终假设源数据可能缺失,并配置“忽略空值”策略,保护目标数据的完整性。

  • 测试验证:先手动在 AI 表格填一条完美数据(含成员 ID,无空值)测试通不通;再测一条缺字段的数据,观察行为是否符合预期。

如果问题依旧,建议您截图 集成自动化的字段映射页面运行报错的详细日志,这样可以更精准地定位问题。