如何在ServiceNow中使用Scripted REST API导入外部工具数据并确认集成类型
在ServiceNow中通过Scripted REST API导入外部数据及集成类型说明
集成类型确认
这属于入站集成——外部工具主动发起请求将数据发送至ServiceNow的REST端点,数据流向为从外部工具进入ServiceNow,完全符合入站集成的定义。
实现步骤
1. 创建Scripted REST API端点
- 登录ServiceNow实例,导航至 System Web Services > Scripted REST APIs
- 点击New创建新API,填写名称(如
External Data Importer)、API ID(如external_data_importer),按需设置可见性为All application scopes - 在创建好的API下,点击New Resource创建接收数据的资源:
- 资源名称:如
import_records - HTTP方法:选择
POST(用于接收外部发送的数据) - 在脚本字段中编写处理逻辑,示例如下:
- 资源名称:如
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) { // 获取外部请求体数据 var requestBody = request.body.data; // 校验必填参数 if (!requestBody.table_name || !requestBody.records) { response.setStatus(400); return {error: "缺少必填参数:table_name 或 records"}; } var tableName = requestBody.table_name; var records = requestBody.records; var result = {success: 0, failed: 0, failed_records: []}; // 遍历并插入数据到目标表 for (var i = 0; i < records.length; i++) { var record = new GlideRecord(tableName); // 字段映射(需根据实际表结构调整) for (var field in records[i]) { if (record.isValidField(field)) { record[field] = records[i][field]; } } var saveResult = record.insert(); if (saveResult) { result.success++; } else { result.failed++; result.failed_records.push({index: i, error: record.getErrorMessage()}); } } response.setStatus(200); return result; })(request, response);
2. 配置端点权限
- 在Scripted REST资源的Security标签页,设置允许访问的角色(如
web_service_access_only或自定义角色) - 创建专用API用户并分配上述角色,用于外部工具的认证
3. 外部工具调用端点
外部工具需发送POST请求至以下格式的URL:
https://<你的ServiceNow实例名>.service-now.com/api/now/external_data_importer/import_records
请求体示例(JSON格式):
{ "table_name": "incident", "records": [ { "short_description": "外部导入测试事件1", "description": "从外部工具同步的事件详情", "priority": "2" }, { "short_description": "外部导入测试事件2", "priority": "3" } ] }
调用时需携带认证信息(基础认证用户名密码或OAuth令牌,按需配置)
4. 测试与调试
- 使用Postman等工具模拟请求,验证数据是否成功插入目标表
- 在ServiceNow的System Log中查看日志,排查字段映射、权限等问题
内容的提问来源于stack exchange,提问作者AliDbouk98
相关产品推荐
相关产品推荐

