新手求助:如何通过Scripted REST API获取ServiceNow全表数据?
ServiceNow Scripted REST API 获取全表数据修复方案
你的代码存在两个关键问题,导致返回空白结果:
records.query()返回的是布尔值(仅表示查询是否执行成功),不是实际的记录集- 直接将GlideRecord对象或query()结果传给
response.setBody(),无法被正确序列化为可返回的数据格式
正确实现代码(指定字段返回)
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { var data = []; var records = new GlideRecord("table_name"); records.query(); // 执行查询,无需接收返回值 // 遍历所有查询到的记录 while (records.next()) { // 自定义返回字段,按需添加或修改 var recordData = { sys_id: records.getValue("sys_id"), name: records.getValue("name"), created_on: records.getDisplayValue("sys_created_on") }; data.push(recordData); } response.setBody(data); })(request, response);
简化版(返回全字段)
如果需要返回记录的所有字段,可以用getRowJSON()快速序列化记录:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { var data = []; var records = new GlideRecord("table_name"); records.query(); while (records.next()) { // 将当前记录转为JSON对象并存入数组 data.push(JSON.parse(records.getRowJSON())); } response.setBody(data); })(request, response);
注意事项
- 替换代码中的
table_name为实际目标表名(如incident、sys_user) - 若表数据量较大,建议添加分页逻辑(使用
records.setLimit(100)和records.setOffset(0)),避免性能问题 - 确保调用接口的用户拥有目标表的读取权限,否则会返回空数据或权限错误
内容的提问来源于stack exchange,提问作者Naveen Kumar
相关产品推荐
相关产品推荐

