Getting values from fields dynamically
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-09-2017 11:34 AM
I am writing a business rule which need to get data from 31 fields. All the fields name are in similar pattern For Example:
day1, day2 ,day3, day4.........day31
So what i want to achieve here is to get the data from all these fields without writing gr.day1, gr.day2 etc instead i want something like
for (var i=1;i<=31;i++){
gs.log(gr."day"+i ) // Of course this will not work but something like this. i also tried using getLabel/Name but i haven't got any success
}
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-09-2017 11:49 AM
by using setValue method you can achieve this
here is the sample code
temp = 'day'+i;
gr.setValue(temp)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-09-2017 10:40 PM
Hi dvp
Thanks a lot it worked. Now if this fields is a reference field and i want to go down one level below this field how to achieve that. For Example
I want to drill down to hours also
temp = 'day'+i;
temp1 = 'hours'+j;
gr.setValue(temp.temp1) // this code is not working is there any alternative to this
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-09-2017 11:45 PM
Hi Ravish,
In Javascript you can retrieve values from an object by two ways - dot notation or by wrapping the name in [ ] brackets. E.g. this code executed as background script gets the department sys_id and then the last row the name of the department.
var gr = new GlideRecord('sys_user');
gr.get(gs.getUserID());
gs.print('Department sys_id = ' + gr["department"]);
gs.print('Department name = ' + gr["department"]["name"]);
In similar way, you could use something like: gr[dayVar] to get value of day variable and to get values from day object gr[dayVarName][minVarName]. Notice that in my example above the var name are strings, however it can be also dynamically defined like variable and called like:
var gr = new GlideRecord('sys_user');
gr.get(gs.getUserID());
var departmentVarName = "department";
gs.print('Department sys_id = ' + gr[departmentVarName]);
gs.print('Department name = ' + gr[departmentVarName]["name"]);
Best regards,
Dominik