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?...