遍历列表收集器而不显示某些值

Iterating through a List Collector and not displaying certain values

我在 ServiceNow(日内瓦版)中有一个服务目录项,人员使用它来请求访问其他 ServiceNow 组。列表收集器显示所有可用的组。我们想限制它并不允许出现一些选择。构建列表收集器变量时,可以指定一个列表table,但不能在其上构建过滤器。

是否可以使用目录客户端脚本来检查加载到列表收集器中的每个项目并跳过它,也许通过检查 sysID 或其他值?我假设滑行正在某处进行记录调用以填充列表收集器,但我不确定如何修改或中断它。

对于此示例,列表收集器被命名为 'bucket'。

我可以尝试从以下开始:

var lcFilter = g_form.getControl('bucket')

可能有一种方法可以操纵 object 中的内容。我只需要帮助弄清楚 object 的哪一部分我需要操作。我们目前使用类似的函数来重命名 List Collector 的 headers,如下所示:

var headers = g_form.getControl('bucket').parentElement.querySelectorAll('.col-xs-4');

headers[0].childNodes[0].firstChild.data = 'All Available Groups';
headers[1].childNodes[0]firstChild.data = 'Groups you wish to add';

您可能想尝试一种解决方案,允许您直接将过滤器应用到我从 http://www.servicenowguru.com/scripting/client-scripts-scripting/changing-filter-list-collector-variable-client-script/

中使用的 列表收集器

下面的代码是从那里复制和粘贴的,所以我不太相信,但你想把你的列表收集器名字放在这里

var collectorName = 'bucket';

然后在此处进行编码查询以对其进行过滤。

var filterString = 'group_nameNOT LIKEApproval^active=true'

这将在 Catalog Client Script 中用于 onLoad

function onLoad() {
   //Apply a default filter to the list collector variable
   var collectorName = 'configuration_items';
   var filterString = 'name!=NULL^sys_class_nameANYTHING';
   //Hide the list collector until we've set the filter
   g_form.setDisplay(collectorName, false);
   setCollectorFilter();

   function setCollectorFilter(){
      //Test if the g_filter property is defined on our list collector.
      //If it hasn't rendered yet, wait 100ms and try again.
      if(typeof(window[collectorName + 'g_filter']) == 'undefined'){
         setTimeout(setCollectorFilter, 100);
         return;
      }
      //Find and hide the filter elements (optional)
      //Simple method for items with only one list collector
      //$('ep').select('.row')[0].hide();
      //Advanced method for items with more than one list collector (more prone to upgrade failure)
      //var el = $('container_' + g_form.getControl(collectorName).id).select('div.row')[0].hide();

      //Reset the filter query
      window[collectorName + 'g_filter'].reset();  
      window[collectorName + 'g_filter'].setQuery(filterString);  
      window[collectorName + 'acRequest'](null);  
      //Redisplay the list collector variable
      g_form.setDisplay(collectorName, true);
   }
}