ServiceNow の Table API を使って、レコード単位で POST リクエストを繰り返す方法だと、レコード数が多い場合に不向きだと思います。そこで今回は、大量のレコード数を一度にテーブル登録可能な Import Set API を試してみました。バージョンは Vancouver
です。
検証用テーブルを作成
test
テーブルを下記のように作成します。

検証用テーブルに Table API でレコード登録
dinstance='dev******.service-now.com'
basicauth='admin:**************'
tablename="u_test"
imptablen="u_imp_test"
curl -s "https://$dinstance/api/now/table/$tablename" \
--request GET \
--user $basicauth \
| jq .
{
"result": []
}
curl -s "https://$dinstance/api/now/table/$tablename" \
--request POST \
--header "Content-Type: application/json" \
--user $basicauth \
--data '{
"u_id": "001",
"u_name": "james"
}' \
| jq .
{
"result": {
"u_name": "james",
"sys_id": "d4a0319e9326b1100dbdb03efaba1086",
"sys_updated_by": "admin",
"u_id": "001",
"sys_created_on": "2023-11-18 22:51:55",
"sys_mod_count": "0",
"sys_updated_on": "2023-11-18 22:51:55",
"sys_tags": "",
"sys_created_by": "admin"
}
}
下記のようにレコードが登録できました。

検証用 Import Set テーブルを作成
imp_test
テーブルを下記のように作成します。

検証用 Transform Map を作成
trans_test
Transform Map を下記のように作成します。

検証用 Transform Map の Field Maps を設定
Auto Map Matching Fields
を使って Field Maps を下記のように作成します。

Import Set テーブルに一レコード登録
curl -s "https://$dinstance/api/now/import/$imptablen" \
--request POST \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--user $basicauth \
--data '{
"u_id": "002",
"u_name": "mary"
}' \
| jq .
{
"import_set": "ISET0010017",
"staging_table": "u_imp_test",
"result": [
{
"transform_map": "trans_test",
"table": "u_test",
"display_name": "u_name",
"display_value": "mary",
"record_link": "https://dev******.service-now.com/api/now/table/u_test/7744f5529366b1100dbdb03efaba10c6",
"status": "inserted",
"sys_id": "7744f5529366b1100dbdb03efaba10c6"
}
]
}

Import Set テーブルに複数レコード登録
curl -s "https://$dinstance/api/now/import/$imptablen/insertMultiple" \
--request POST \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--user $basicauth \
--data '{
"records": [
{
"id": "003",
"name": "linda"
},
{
"id": "004",
"name": "david"
}
]
}' \
| jq .
{
"import_set_id": "04f4b5169366b1100dbdb03efaba10ba",
"multi_import_set_id": "c8f4b5169366b1100dbdb03efaba10ba"
}

参考
https://developer.servicenow.com/dev.do#!/reference/api/vancouver/rest/c_ImportSetAPI
タグ: ServiceNow