get column labels of fields in a table

xiaix
Tera Guru

Question: When I query a table (GlideRecord query) on the server side (via Script Include), how can I capture the Column Label of each field on the record?

If further information is needed, or if you would like to see my current script include, let me know.

1 ACCEPTED SOLUTION

Brad Tilton
ServiceNow Employee
ServiceNow Employee

Hi David,



Try gr[fieldName].getLabel()


View solution in original post

8 REPLIES 8

Brad Tilton
ServiceNow Employee
ServiceNow Employee

Hi David,



I think you should be able to use getLabel() for that. You could combine with getFields() if you want an array of all of the fields and then use that for the label.



GlideRecord - ServiceNow Wiki


Well, here's what I have so far:



var search_for_sysID = Class.create();


search_for_sysID.prototype = Object.extendsObject(AbstractAjaxProcessor, {


     


// 1st Function


      getRecords: function()


      {


              var tableSysID = this.getParameter('sysparm_tableSysID');


              var sysID = this.getParameter('sysparm_sysID');


             


              var tableName = '';


             


              // First, query the "Table" table to get the requested table "name".


              var gr = new GlideRecord('sys_db_object');


              gr.addQuery('sys_id', tableSysID);


              gr.query();


             


              if (gr.next())


              {


                      tableName = gr.name.toString();


              }


             


              if (tableName.length < 1)


                      return 'no table name';


             


              // We now have a proper 'table_name'


              // Now query the correct table by the given sysID and return the values of the found record


              gr = new GlideRecord(tableName);


              gr.addQuery('sys_id', sysID);


              gr.query();


             


              var fields;


              var recordArray = [];


              var fieldName = '';


             


              if (gr.next())


              {


                      var directURL = (gs.getProperty('glide.servlet.uri') + "nav_to.do?uri=" + tableName + ".do?sys_id=" + sysID);


                     


                      fields = new GlideRecordUtil().getFields(gr);


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


                      {


                              fieldName = fields[i];


                              recordArray.push({ field_name: fieldName, value: gr.getDisplayValue(fieldName), url: directURL, label: fieldName });


                      }


                      return (new JSON().encode(recordArray));


              }


             


              return 'no record';


      }


     


});




I tried your code here:


recordArray.push({ field_name: fieldName, value: gr.getDisplayValue(fieldName), url: directURL, label: gr.getLabel() });



but gr.getLabel() returned the table name (in my test, it was "Incident").


Try



getFields().getLabel()


recordArray.push({ field_name: fieldName, value: gr.getDisplayValue(fieldName), url: directURL, label: gr.getFields(fieldName).getLabel() });



The "label" node of this array yields "undefined"





recordArray.push({ field_name: fieldName, value: gr.getDisplayValue(fieldName), url: directURL, label: gr.getFields().getLabel() });



The "label" node of this array yields "undefined"