Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

GlideRecord Loop each field in table

georgechen
Kilo Guru

Hi folks,

Is there a API that supports the looping of each field in a table with GlideRecord? Like

var i=1;

For each FIELD in FIELDS {

  gs.print('Field ' + i + ': ' + FIELD.name);

}

Any advise would be appreciated.

Thanks,

1 ACCEPTED SOLUTION

John VanBruggen
Giga Guru

I don't know of anything OOB but you could use something like this:




=================================================================


getFields('alm_asset')




function getFields(table) {


  var i=0;


  var gr = new GlideRecord('sys_dictionary');


  gr.addQuery('name',table)


  gr.query();


  while(gr.next()) {


  i=i+1;


  gs.print('Field ' + i + ': ' + gr.element);


  }


}



================================================================



Just pass the table name to the function and it will log out the various elements.



I ran the above as a background script and it gave me the following results.



[0:00:00.017] Script completed in scope global: script



*** Script: Field 1: 
*** Script: Field 2: acquisition_method
*** Script: Field 3: active_to
*** Script: Field 4: asset_tag
*** Script: Field 5: assigned
*** Script: Field 6: assigned_to
*** Script: Field 7: beneficiary
*** Script: Field 8: checked_in
*** Script: Field 9: checked_out
*** Script: Field 10: ci
*** Script: Field 11: comments
*** Script: Field 12: company
*** Script: Field 13: cost
*** Script: Field 14: cost_center
*** Script: Field 15: delivery_date
*** Script: Field 16: department
*** Script: Field 17: depreciated_amount
*** Script: Field 18: depreciation
*** Script: Field 19: depreciation_date
*** Script: Field 20: display_name
*** Script: Field 21: disposal_reason
*** Script: Field 22: due
*** Script: Field 23: due_in
*** Script: Field 24: gl_account
*** Script: Field 25: install_date
*** Script: Field 26: install_status
*** Script: Field 27: invoice_number
*** Script: Field 28: justification
*** Script: Field 29: lease_id
*** Script: Field 30: location
*** Script: Field 31: managed_by
*** Script: Field 32: model
*** Script: Field 33: model_category
*** Script: Field 34: old_status
*** Script: Field 35: old_substatus
*** Script: Field 36: order_date
*** Script: Field 37: owned_by
*** Script: Field 38: parent
*** Script: Field 39: po_number
*** Script: Field 40: pre_allocated
*** Script: Field 41: purchase_date
*** Script: Field 42: quantity
*** Script: Field 43: request_line
*** Script: Field 44: resale_price
*** Script: Field 45: reserved_for
*** Script: Field 46: residual
*** Script: Field 47: residual_date
*** Script: Field 48: retired
*** Script: Field 49: retirement_date
*** Script: Field 50: salvage_value
*** Script: Field 51: serial_number
*** Script: Field 52: skip_sync
*** Script: Field 53: stockroom
*** Script: Field 54: substatus
*** Script: Field 55: supported_by
*** Script: Field 56: support_group
*** Script: Field 57: sys_class_name
*** Script: Field 58: sys_created_by
*** Script: Field 59: sys_created_on
*** Script: Field 60: sys_domain
*** Script: Field 61: sys_domain_path
*** Script: Field 62: sys_id
*** Script: Field 63: sys_mod_count
*** Script: Field 64: sys_updated_by
*** Script: Field 65: sys_updated_on
*** Script: Field 66: vendor
*** Script: Field 67: warranty_expiration
Check out my Consultant's Survival Guide
https://youtube.com/watch?v=zYi8KhP9SUk

View solution in original post

4 REPLIES 4

ismailsn
ServiceNow Employee
ServiceNow Employee

Hi George,



This can be done by using the getFields and getValue methods. Here is an example I just wrote for you that will grab all the values for all the fields on a specific incident record:



getFieldValues('INCD045011')




function getFieldValues(incNumber) {




      var target = new GlideRecord('incident');


      target.addQuery('number', incNumber);


      target.query();


      var gru = new GlideRecordUtil();


      while (target.next()) {




              var fieldNames = gru.getFields(target);


              for (var i = 0; i <= fieldNames.length; i++) {


                      gs.print("The field: " + fieldNames[i] + " on the current record has a value of: " + target.getValue(fieldNames[i]));


              }


      }


}


John VanBruggen
Giga Guru

I don't know of anything OOB but you could use something like this:




=================================================================


getFields('alm_asset')




function getFields(table) {


  var i=0;


  var gr = new GlideRecord('sys_dictionary');


  gr.addQuery('name',table)


  gr.query();


  while(gr.next()) {


  i=i+1;


  gs.print('Field ' + i + ': ' + gr.element);


  }


}



================================================================



Just pass the table name to the function and it will log out the various elements.



I ran the above as a background script and it gave me the following results.



[0:00:00.017] Script completed in scope global: script



*** Script: Field 1: 
*** Script: Field 2: acquisition_method
*** Script: Field 3: active_to
*** Script: Field 4: asset_tag
*** Script: Field 5: assigned
*** Script: Field 6: assigned_to
*** Script: Field 7: beneficiary
*** Script: Field 8: checked_in
*** Script: Field 9: checked_out
*** Script: Field 10: ci
*** Script: Field 11: comments
*** Script: Field 12: company
*** Script: Field 13: cost
*** Script: Field 14: cost_center
*** Script: Field 15: delivery_date
*** Script: Field 16: department
*** Script: Field 17: depreciated_amount
*** Script: Field 18: depreciation
*** Script: Field 19: depreciation_date
*** Script: Field 20: display_name
*** Script: Field 21: disposal_reason
*** Script: Field 22: due
*** Script: Field 23: due_in
*** Script: Field 24: gl_account
*** Script: Field 25: install_date
*** Script: Field 26: install_status
*** Script: Field 27: invoice_number
*** Script: Field 28: justification
*** Script: Field 29: lease_id
*** Script: Field 30: location
*** Script: Field 31: managed_by
*** Script: Field 32: model
*** Script: Field 33: model_category
*** Script: Field 34: old_status
*** Script: Field 35: old_substatus
*** Script: Field 36: order_date
*** Script: Field 37: owned_by
*** Script: Field 38: parent
*** Script: Field 39: po_number
*** Script: Field 40: pre_allocated
*** Script: Field 41: purchase_date
*** Script: Field 42: quantity
*** Script: Field 43: request_line
*** Script: Field 44: resale_price
*** Script: Field 45: reserved_for
*** Script: Field 46: residual
*** Script: Field 47: residual_date
*** Script: Field 48: retired
*** Script: Field 49: retirement_date
*** Script: Field 50: salvage_value
*** Script: Field 51: serial_number
*** Script: Field 52: skip_sync
*** Script: Field 53: stockroom
*** Script: Field 54: substatus
*** Script: Field 55: supported_by
*** Script: Field 56: support_group
*** Script: Field 57: sys_class_name
*** Script: Field 58: sys_created_by
*** Script: Field 59: sys_created_on
*** Script: Field 60: sys_domain
*** Script: Field 61: sys_domain_path
*** Script: Field 62: sys_id
*** Script: Field 63: sys_mod_count
*** Script: Field 64: sys_updated_by
*** Script: Field 65: sys_updated_on
*** Script: Field 66: vendor
*** Script: Field 67: warranty_expiration
Check out my Consultant's Survival Guide
https://youtube.com/watch?v=zYi8KhP9SUk

Great work!


BenPhillipsSNC
Kilo Guru

What about inherited columns from parent tables though?...