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(); };