Casos de uso de script de campo

  • Versão de lançamento: Australia
  • Atualizado 12 de mar. de 2026
  • 5 min. de leitura
  • Casos de uso comuns para scripts de personalização de campo.

    Aviso:
    A personalização descrita aqui foi desenvolvida para uso em instâncias específicas e não é compatível com Now Support. Este método é fornecido no estado em que se encontra e deve ser testado cuidadosamente antes da implementação. Publique todas as perguntas e comentários sobre esta personalização no fórum da nossa comunidade.

    Para obter mais informações, consulte Referência da API do servidor.

    Preencha automaticamente um campo

    O exemplo a seguir mostra como usar um script de cliente para preencher automaticamente um Descrição resumida com base no selecionado Subcategoria .

    Neste caso, se a tabela tiver um registro com Subcategoria : Senha e. Descrição resumida Redefinição de senha. Quando o usuário seleciona Subcategoria de Senha No formulário Incidente, um script de cliente pesquisa o registro e os conjuntos correspondentes Descrição resumida Igual à Redefinição de senha.

    Configurações de client script:
    • Type OnChange
    • Table name incidente
    • Field name Subcategoria
    function onChange(control, oldValue, newValue, isLoading){
        if(isLoading){return;}
        var newrec = gel('sys_row');
        //Check if new record
        if (newrec.value == -1) {
            var lookup = new GlideRecord('u_short_desc_lookup');
            lookup.addQuery('u_subcategory', g_form.getValue('subcategory'));
            lookup.query();
            var temp; //temp var - reusable
            if(lookup.next()){
                temp = lookup.u_short_description;
                if(null != temp) {
                    //Set the form value from lookup if there is a lookup value
                    g_form.setValue('short_description', temp);
                } else {
                    g_form.setValue('short_description',"");
                    }
              } else {
                  //If a lookup record does not exist based on lookup.addQuery
                  //Then set to UNDEFINED or NULL depending on type
                  g_form.setValue('short_description',"");
                  }
         }
    }

    Desabilite marcadores HTML nas descrições

    Este código desabilita marcadores HTML em Descrição e. Descrição resumida substituindo os marcadores por versões não executadas.
    doit();
     
    function doit(){ 
     var desc = current.description.toString();
     var shdesc = current.short_description.toString();
     if(desc.indexOf('script>')>-1|| shdesc.indexOf('script>')>-1){
       desc = desc.replace(/<script>/g,"(script)");
       current.description = desc.replace(/<\/script>/g,"(\/script)");
       shdesc = shdesc.replace(/<script>/g,"(script)");
       current.short_description = shdesc.replace(/<\/script>/g,"(\/script)");}
    }

    Elimine espaços à esquerda e à direita nos campos

    Este exemplo do script corta os espaços à direita e à esquerda no FirstNamee. LastNamecampos do sys_user.
    doit();
     
    function doit(){ 
      var now_GR =new GlideRecord('sys_user');
      gr.query();
      while(gr.next()){
        if((gr.first_name.toString().length!= gr.first_name.toString().trim().length)||(gr.last_name.toString().length!= gr.last_name.toString().trim().length)){
         gr.first_name= gr.first_name.toString().trim();
         gr.last_name= gr.last_name.toString().trim();
         gr.autoSysFields(false);
         gr.update();}}
    }

    Pisque um rótulo de campo

    O exemplo de script de cliente a seguir é para o campo Número no incidente. O rótulo pisca por dois segundos.
    g_form.flash("incident.number","#FFFACD",0);
    Os argumentos para o método flash são os seguintes:
    • tablename.fieldname
    • Cor RGB ou cor CSS aceitável como "azul" ou "tomate"
    • Número inteiro que determina por quanto tempo o rótulo pisca:
      • 2 para um flash de 1 segundos
      • 0 para um flash de 2 segundos
      • -2 para um flash de 3 segundos
      • -4 para um flash de 4 segundos
    Nota:
    Não especifique este argumento se você quiser que o rótulo do campo colore a cor especificada.

    Coloque um rótulo de campo em negrito

    Este script de cliente deixa o rótulo de um campo específico em negrito. Nesse caso, o campo é Descrição resumida em Tabela de Incidentes .
    function onLoad(){
      var l = g_form.getLabel('incident.short_description');
      l.style.fontWeight = 'bold';}

    Torne os campos somente leitura

    Este script de cliente onLoad torna os seguintes campos na tabela Incidente [incidente] somente leitura:
    • Estado do incidente
    • Impacto
    • Urgência
    • Prioridade
    • Item de configuração
    • Atribuído a
    O script também remove a lupa dos Campos de referência somente leitura ( Item de configuração e. Atribuído a. ).
    function onLoad(){
    var incidentState = g_form.getValue('incident_state');
    if( incidentState == '6'|| incidentState == '7'){
       g_form.setReadonly('incident_state',true);
       g_form.setReadonly('impact',true);
       g_form.setReadonly('urgency',true);
       g_form.setReadonly('priority',true);
       g_form.setReadonly('cmdb_ci',true);
       g_form.setReadonly('assigned_to',true);}}

    Defina a data/hora atual no campo

    Você pode definir valores de data e hora em scripts de cliente e inclusões de script.

    Client scripts
    Você pode usar as duas linhas a seguir para definir a data e a hora atuais em um campo de data/hora. Essa abordagem ignora o problema de obter o valor no formato e no fuso horário adequados.
    var ajax = new GlideAjax('MyDateTimeAjax');
      ajax.addParam('sysparm_name','nowDateTime');
      ajax.getXML(function(){
        g_form.setValue('put your field name here', ajax.getAnswer());});
    Para obter mais informações sobre como executar scripts do lado do servidor com o cliente, consulte GlideAjax .
    Inclusão de script do sistema
    // Be sure the Glide AJAX enabled option is checked
     
    var MyDateTimeAjax = Class.create();
    MyDateTimeAjax.prototype = Object.extendsObject(AbstractAjaxProcessor,{
      nowDateTime:function(){
        return gs.nowDateTime();}});

    Alterne o campo do temporizador por nome de campo

    O script de cliente a seguir alterna o campo do temporizador com base em um nome de campo específico.
    function toggleTimerByFieldName(fieldName){
     //Step 1: Find the timer object
     //timeObjectName: the timer objects name as it would normally be referenced
     //timeObjectHidden: the hidden input node in the field td
     //timeObjectParent: the parent td node containing the field and it's constituent nodes
     //timeObjectFields: anchor tag with onclick to stop timer
     
     var timeObjectName = fieldName;
     var timeObjectHidden = gel(timeObjectName);
     
     //Step 2: simulate click stop button
     var timeObjectParent;
     var timeObjectFields;
     
     //verify that we got the correct object
     if(timeObjectHidden.type=="hidden"){
     
        //Get Parent td node
        timeObjectParent = timeObjectHidden.parentNode;
     
        //Get input fields
        timeObjectFields = timeObjectParent.getElementsByTagName("input");
     
        //simulate click of stop button
        var timerTestString ="paused";
        var timerImg;
     
        //loop through input objects looking for the pause timer object
        for(var elIt=0; elIt < timeObjectFields.length; elIt++){
          if(timeObjectFields[elIt].id.match(timerTestString)){
            if(timeObjectFields[elIt].value=="false"){
              timeObjectFields[elIt].value="true";
              timerImg = timeObjectParent.getElementsByTagName("img")[0];
              timerImg.src="images/timer_start.gifx";}
          elseif(timeObjectFields[elIt].value=="true"){
              timeObjectFields[elIt].value="false";
              timerImg = timeObjectParent.getElementsByTagName("img")[0];
              timerImg.src="images/timer_stop.gifx";}}}}}

    Modifique os valores do campo GlideDateTime

    O exemplo de script do lado do servidor a seguir mostra como modificar valores usando o. GlideDateTime API. O mesmo conceito também se aplica ao GlideDate objeto.
    Nota:
    O script a seguir destina-se apenas a aplicações globais.
    //You first need a GlideDateTime object
    //this can be from instantiating a new object "var gdt = new GlideDateTime()"
    //or getting the object from a GlideDateTime field
    //getting the field value (for example: var gdt = current.start_date) only returns the string value, not the object
    //to get the object use var gdt = current.start_date.getGlideObject(); (GlideElement)
    //now gdt is a GlideDateTime object
    var gdt = current.start_date.getGlideObject();
     
    //All methods can use negative values to subtract intervals
     
    //add 1 hour (60 mins * 60 secs)
    gdt.addSeconds(3600);
     
    //add 1 day
    gdt.addDaysLocalTime(1);
     
    //subtract 1 day
    gdt.addDaysLocalTime(-1);
     
    //add 3 weeks
    gdt.addWeeksLocalTime(3);
     
    //subtract 6 months
    gdt.addMonthsLocalTime(-6);
     
    //add 1 year, representing the date and time using the UTC timezone instead of the local user's timezone.
    gdt.addYearsUTC(1);
     
    //set the value of the GlideDateTime object to the current session timezone/format
    GlideSession.get().setTimeZoneName('US/Eastern');
    gdt.setDisplayValue('2018-2-28 00:00:00');
    gs.info('In ' + GlideSession.get().getTimeZoneName() + ": " + gdt.getDisplayValue());
    Consulte também: