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

新手求助:如何通过Scripted REST API获取ServiceNow全表数据?

ServiceNow Scripted REST API 获取全表数据修复方案

你的代码存在两个关键问题,导致返回空白结果:

  1. records.query()返回的是布尔值(仅表示查询是否执行成功),不是实际的记录集
  2. 直接将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:10:23