How do I set up the Table API to get values in both languages
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-15-2022 05:19 AM
I am using the Table API of ServiceNow. When the interface calls the tableAPI, I can only get the default language value of the interface account. However, I want to get both Chinese and English values. Is there anything I can do?
5 REPLIES 5

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-16-2022 03:20 AM
Sample Scripted REST API to get table data in different language. (It's not complete.)
1. In Scripted REST API, define Query Parameters "lang" and "table".
2. Define script
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var queryParams = request.queryParams;
var tableName = queryParams.table.toString();
var lang = queryParams.lang.toString();
if (!tableName) {
var unspecifiedValue = new sn_ws_err.ServiceError();
unspecifiedValue.setStatus(400);
unspecifiedValue.setMessage('parameter table not specified');
unspecifiedValue.setDetail('table name must be specified in parameter.');
return unspecifiedValue;
}
if (!lang) {
lang = 'en';
}
var tableUtil = new TableUtil2();
var records = tableUtil.getTableData(tableName, lang);
return records;
})(request, response);
3. Define Script Include to retrieve data from table
var TableUtil2 = Class.create();
TableUtil2.prototype = {
initialize: function() {},
getTableData: function(tableName, language) {
var records = [];
var gr = new GlideRecord(tableName);
//gr.setLimit(1);
gr.query();
gr.next();
var fields = gr.getFields();
for (var i = 0; i < fields.size(); i++) {
var glideElement = fields.get(i);
if (glideElement.hasValue()) {
var label = this.getLabel(tableName, glideElement.getName(), language);
if (!label) {
label = glideElement.getLabel();
}
var value = this.getChoiceValue(tableName, glideElement.getName(), glideElement, language);
if (!value) {
value = glideElement.getValue();
}
var col = {};
col[label] = value;
records.push(col);
}
}
return records;
},
getChoiceValue: function(tableName, element, value, language) {
grChoice = new GlideRecord('sys_choice');
grChoice.addQuery('name', tableName);
grChoice.addQuery('element', element);
grChoice.addQuery('value', value);
grChoice.addQuery('language', language);
grChoice.query();
if (grChoice.next()) {
return grChoice.getValue('label');
}
return;
},
getLabel: function(tableName, element, language) {
grDoc = new GlideRecord('sys_documentation');
grDoc.addQuery('name', tableName);
grDoc.addQuery('element', element);
grDoc.addQuery('language', language);
grDoc.query();
if (grDoc.next()) {
return grDoc.getValue('label');
}
return;
},
type: 'TableUtil2'
};
Sample execution results:
case 'ja': /getdatabylang?table={tablename}&lang=ja
{'result': [{'Updated by': 'admin'}, {'Created': '2022-05-16 08:42:52'}, {'Updates': '0'}, {'選択': '選択1'}, {'Updated': '2022-05-16 08:42:52'}, {'フィールド2': 'test value2'}, {'作成者': 'admin'}, {'フィールド1': 'test value1'}]}
case 'en': /getdatabylang?table={tablename}&lang=en
{'result': [{'Updated by': 'admin'}, {'Created': '2022-05-16 08:42:52'}, {'Updates': '0'}, {'selectbox': 'Choice1'}, {'Updated': '2022-05-16 08:42:52'}, {'Field2': 'test value2'}, {'Created by': 'admin'}, {'Field1': 'test value1'}]}