While working on generating thousand of rows to stress my application on ServiceNow I figure a way to duplicate any GlideRecord.
It’s important to note that in my example I’m querying a table and duplicating each record, this method should work with any single GlideRecord.
For the sake of simplicity here’s the code:
//query the rows we want to copy
var ga = new GlideRecord('cmdb_ci_server');
ga.query();
while (ga.next()) {
//get all the fields for this record
var fields = ga.getFields();
//create a new record
var gr = new GlideRecord('cmdb_ci_server');
gr.initialize();
for (var i = 0; i < fields.size(); i++) {
var glideElement = fields.get(i);
//make sure we don't copy the sys_id
if(glideElement.getName() != 'sys_id')
{
gr[key] = ga.getValue(glideElement.getName());
}
}
var newSysId = gr.insert();
};