Nützliche Feldskripts

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 4 Minuten Lesedauer
  • Häufige Anwendungsfälle für Feldanpassungsskripts.

    Warnung:
    Die hier beschriebene Anpassung wurde für die Verwendung in bestimmten Fällen entwickelt und wird von Now Support nicht unterstützt. Diese Methode wird wie sie ist zur Verfügung gestellt und sollte vor der Implementierung gründlich getestet werden. Veröffentlichen Sie alle Fragen und Kommentare zu dieser Anpassung in unserem Community-Forum.

    Weitere Informationen finden Sie unter Server API reference.

    Füllen Sie ein Feld automatisch aus

    Das folgende Beispiel zeigt, wie Sie ein Client-Skript verwenden, um eine Kurzbeschreibung basierend auf der ausgewählten Unterkategorieautomatisch auszufüllen.

    In diesem Fall, wenn die Tabelle einen Datensatz mit Unterkategorie = Passwort und Kurzbeschreibung = Passwortzurücksetzung enthält. Wenn der Benutzer die Unterkategorie Passwort im Incident-Formular auswählt, sucht ein Client-Skript nach dem übereinstimmenden Datensatz und legt die Kurzbeschreibung auf „Passwort zurücksetzen“ fest.

    Client-Skript-Einstellungen:
    • Type = onChange
    • Table name = Incident
    • Field name = Unterkategorie
    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',"");
                  }
         }
    }

    HTML-Tags in Beschreibungen deaktivieren

    Dieser Code deaktiviert HTML-Tags in den Feldern Beschreibung und Kurzbeschreibung, indem die Tags durch nicht ausgeführte Versionen ersetzt werden.
    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)");}
    }

    Führende und nachgestellte Leerzeichen in Feldern beseitigen

    In diesem Beispiel des Skripts werden nachgestellte und führende Leerzeichen in den Feldern FirstName und LastName von sys_user entfernt.
    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();}}
    }

    Feldbezeichnungen zum Blinken bringen

    Das folgende Client-Skript-Beispiel bezieht sich auf das Nummernfeld in Incident. Die Bezeichnung blinkt zwei Sekunden lang.
    g_form.flash("incident.number","#FFFACD",0);
    Die Argumente für die flash-Methode lauten wie folgt:
    • tablename.fieldname
    • RGB-Farbe oder zulässige CSS-Farbe wie „Blau“ oder „Tomate“
    • Ganzzahl, die bestimmt, wie lange die Bezeichnung blinkt:
      • 2 für 1 Sekunde Blinken
      • 0 für 2 Sekunden Blinken
      • -2 für eine Blinkdauer von 3 Sekunden
      • -4 für eine Blinkdauer von 4 Sekunden
    Hinweis:
    Geben Sie dieses Argument nicht an, wenn die Feldbezeichnung die angegebene Farbe haben soll.

    Markieren Sie eine Feldbezeichnung fett

    Dieses Client-Skript formatiert die Bezeichnung eines bestimmten Felds fett. In diesem Fall ist das Feld die Kurzbeschreibung in der Incident-Tabelle.
    function onLoad(){
      var l = g_form.getLabel('incident.short_description');
      l.style.fontWeight = 'bold';}

    Felder schreibschützen

    Dieses onLoad-Client-Skript macht die folgenden Felder in der Incident-Tabelle [incident] schreibgeschützt:
    • Incident-Status
    • Auswirkung
    • Dringlichkeit
    • Priorität
    • Konfigurationselement
    • Zugewiesen an
    Das Skript entfernt auch die Lupe für die schreibgeschützten Referenzfelder (Konfigurationselement und Zugewiesen an).
    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);}}

    Aktuelles Datum/aktuelle Uhrzeit im Feld festlegen

    Sie können Datums- und Uhrzeitwerte in Client-Skripts und Skripteinbindungen festlegen.

    Clientskript
    Sie können die folgenden zwei Zeilen verwenden, um das aktuelle Datum und die aktuelle Uhrzeit in einem Datums-/Uhrzeitfeld festzulegen. Dieser Ansatz umgeht das Problem, den Wert in das richtige Format und die richtige Zeitzone zu bringen.
    var ajax = new GlideAjax('MyDateTimeAjax');
      ajax.addParam('sysparm_name','nowDateTime');
      ajax.getXML(function(){
        g_form.setValue('put your field name here', ajax.getAnswer());});
    Weitere Informationen zum Ausführen von serverseitigen Skripts mit dem Client finden Sie unter GlideAjax.
    System-Skripteinbindung
    // Be sure the "Client callable" checkbox is checked
     
    var MyDateTimeAjax = Class.create();
    MyDateTimeAjax.prototype = Object.extendsObject(AbstractAjaxProcessor,{
      nowDateTime:function(){
        return gs.nowDateTime();}});

    Schalten Sie das Timer-Feld nach Feldname um

    Das folgende Client-Skript schaltet das Timer-Feld basierend auf einem bestimmten Feldnamen um.
    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";}}}}}

    GlideDateTime-Feldwert ändern

    Im folgenden Beispiel wird ein serverseitiges Skript verwendet, um auf ein Feld GlideDateTime zuzugreifen.

    Das folgende Beispiel für ein serverseitiges Skript zeigt, wie Werte mit der GlideDateTime- API geändert werden. Dasselbe Konzept gilt auch für das GlideDate-Objekt.
    //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();
    //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.addSecondsLocalTime(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);