在宜搭平台中,通过 AI 表格(或智能表格) 同步数据到 普通表单/流程表单 时,遇到 “成员字段” 和 “空字段” 问题是非常常见的。这通常是因为两种组件的数据存储格式不一致,或者同步规则配置不够精细导致的。
以下是针对这两个问题的详细排查步骤和解决方案:
问题一:成员字段(Member)同步失败或显示异常
原因分析:
数据格式不匹配:
AI 表格/智能表格中的成员列,存储的可能是“姓名”(字符串)或“用户 ID”(字符串)。
表单中的成员组件,严格要求存储格式为
{"userId": "xxx", "name": "xxx"}的对象结构 或者特定的 用户 ID 字符串。如果直接同步“姓名”,表单无法识别该用户,导致显示为空、显示为文本而非头像,或报错。
权限问题:同步账号没有权限读取目标用户的详细信息。
✅ 解决方案:
方法 A:使用“业务关联规则”进行字段映射转换(推荐)
不要直接一对一映射,而是通过规则进行转换。
进入 集成&自动化 (或表单设置中的 业务关联规则)。
新建一个规则:当 AI 表格新增/修改数据时 -> 创建/更新表单数据。
在 字段映射 环节,点击成员字段右侧的 公式/函数图标(而不是直接拖拽字段)。
使用查找函数:
如果 AI 表格存的是姓名:使用
getUserIdByName()类似逻辑(宜搭目前主要通过 数据源查询 实现)。更稳妥的做法:确保 AI 表格中存储的是 工号 或 用户 ID (userId)。
在映射时,直接使用 ID 字段 映射到表单的成员字段。宜搭的成员组件通常能自动识别纯 userId 字符串并转换为成员对象。
检查数据类型:确保 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:配置“仅同步非空字段” (关键)
在配置同步规则(集成&自动化 / 业务关联规则)时,寻找 “高级设置” 或 “更新策略”。
找到 “字段更新策略” 或 “空值处理” 选项。
选择 “仅更新有值的字段” 或 “忽略空值” (Skip Null Values)。
这样,如果 AI 表格中某列为空,系统将跳过该字段,保留表单中原有的数据,而不是将其清空。
如果没有此全局选项:您需要对每个可能为空的字段单独判断(见方法 B)。
方法 B:使用公式/条件判断进行映射
在字段映射时,不要直接连线,而是使用 公式:
点击目标字段的映射输入框,选择 “公式”。
编写逻辑:
IF(ISBLANK(源字段), 目标字段原值, 源字段)。若目标字段有默认值:确保表单设计中设置了默认值。
若目标字段允许为空:直接映射即可,但需检查是否触发了必填校验。
注意:在“创建数据”动作中无法获取“目标字段原值”。此方法主要适用于 “更新数据” 动作。
如果是 “创建数据” 且源字段为空:
方法 C:检查表单的“必填”属性
进入目标表单的设计器。
检查报错的字段是否开启了 “必填”。
如果业务上允许该字段为空,请关闭必填。
如果业务上必须必填,则需要在 AI 表格端确保数据完整,或在同步流程中加入 “条件分支”:只有当源字段不为空时,才执行同步/更新动作。
🚀 综合排查清单 (Checklist)
请按顺序执行以下操作:
检查源数据格式:
打开 AI 表格,查看“成员”列。点击一个单元格,看它的真实值是 姓名 还是 ID?
修正:如果是姓名,请在 AI 表格中将列类型改为“成员”,或增加一列专门存“用户 ID”。
检查同步动作类型:
你是选的是 “创建数据” 还是 “更新数据”?
如果是更新,务必开启 “忽略空值” 策略,防止覆盖原有数据。
检查目标表单约束:
目标字段是否设了“必填”?如果是,空值同步必败。
目标字段是否有“唯一性”校验?
查看运行日志:
Invalid member format: 成员格式不对(解决:传 ID)。Field xxx is required: 必填项为空(解决:关必填或补数据)。Type mismatch: 类型不匹配(解决:检查数字/文本/日期格式)。进入 集成&自动化 -> 运行记录。
点击失败的那条记录,查看 “错误详情”。
常见错误提示:
💡 最佳实践建议
成员字段:在所有系统集成中,永远使用
userId(用户 ID) 进行传输,不要在传输层使用姓名。姓名仅用于展示。空值处理:在涉及“更新”操作时,始终假设源数据可能缺失,并配置“忽略空值”策略,保护目标数据的完整性。
测试验证:先手动在 AI 表格填一条完美数据(含成员 ID,无空值)测试通不通;再测一条缺字段的数据,观察行为是否符合预期。
如果问题依旧,建议您截图 集成自动化的字段映射页面 和 运行报错的详细日志,这样可以更精准地定位问题。