ServiceNow导出XML显示UID而非实际值的问题及解决方法
ServiceNow导出CSV与XML数据格式差异问题解答
问题原因
ServiceNow的CSV和XML导出有内置的行为差异:
- CSV导出默认会自动处理引用字段(比如关联用户表的
closed_by),直接返回字段的显示名称(如用户姓名); - XML导出则默认返回引用字段的原始存储值——也就是记录的唯一标识符
sys_id(即你看到的UID),这是因为XML设计更偏向于保留数据的原始关联关系,而非直接展示友好名称。
解决方法
方法1:修改导出URL参数
在XML导出URL中明确指定要返回的显示名称字段,而非原始引用字段。引用字段的显示名称通常可以通过字段名.name的形式调用(用户类字段默认显示名称对应.name)。
示例修改后的XML导出URL:
https://mysnow.service-now.com/incident_list.do?XML&sysparm_query=ORDERBYsys_id%5esys_idSTARTSWITH0&sysparm_fields=sys_id,number,closed_by,closed_by.name
如果需要保留所有原有字段,需将每个引用字段对应的显示名称字段补充到sysparm_fields参数中,比如同时添加assigned_to,assigned_to.name这类字段。
方法2:使用自定义列表视图导出
- 进入ServiceNow的事件列表页面(
incident_list.do),调整列配置,将closed_by替换为closed_by.name(或同时保留两个字段); - 保存当前列配置为自定义视图(例如命名为「带显示名的导出视图」);
- 导出XML时,在URL中添加
sysparm_view=你的自定义视图名称参数,或者在界面中选择该视图后再执行导出。
方法3:导出后脚本处理(适合小批量数据)
如果无法修改导出参数,可以用脚本(如Python、PowerShell)解析导出的XML,再通过ServiceNow的Table API根据sys_id查询对应的显示名称,批量替换XML中的UID值。不过这种方法效率较低,仅建议用于数据量不大的场景。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

