如何在ServiceNow的sc_task中设置所有可见任务变量为只读?
在ServiceNow目录任务(sc_task)中批量设置可见变量为只读的方案
针对San Diego版本的需求,无需硬编码所有变量,可通过客户端脚本动态遍历并处理当前表单上的可见变量,具体实现如下:
实现步骤
- 在
sc_task表创建目录客户端脚本,类型选择onLoad,按需绑定到指定目录项或设置为全局生效。 - 利用ServiceNow内置的
g_formAPI完成变量遍历、可见性判断与只读设置。
脚本代码示例
function onLoad() { // 获取当前表单所有可编辑字段(包含变量字段,格式为variables.变量名) var editableFields = g_form.getEditableFields(); // 遍历字段并处理可见变量 editableFields.forEach(function(fieldName) { // 筛选变量字段且当前可见的项 if (fieldName.startsWith('variables.') && g_form.isVisible(fieldName)) { // 设置为只读状态 g_form.setReadOnly(fieldName, true); } }); }
关键逻辑说明
g_form.getEditableFields():获取表单上所有可编辑字段,自动包含目录变量(命名格式为variables.xxx)fieldName.startsWith('variables.'):精准筛选变量字段,避免误处理任务表原生字段g_form.isVisible(fieldName):仅对当前表单上可见的变量进行操作,适配不同任务的变量显示差异g_form.setReadOnly(fieldName, true):将目标变量设置为只读状态
该方案会自动适配不同任务中显示的变量集合,后续新增变量无需修改脚本,比硬编码方式更灵活易维护。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

