Nützliche Anhangskripts

  • Freigeben Version: Australia
  • Aktualisiert 12. März 2026
  • 2 Minuten Lesedauer
  • Dies ist eine durchsuchbare Version der nützlichen Anhangskripts.

    Warnung:
    Die hier beschriebene Anpassung wurde für die Verwendung in bestimmten Instanzen entwickelt und wird von nicht unterstützt Now Support. Diese Methode wird unverändert bereitgestellt und sollte vor der Implementierung gründlich getestet werden. Veröffentlichen Sie alle Fragen und Kommentare zu dieser Anpassung in unserer Community Forum .

    Kopieren Sie Anhänge aus Datensatz in Datensatz

    Verwenden Sie das folgende Skript, um einen Anhang aus einem Datensatz in einen anderen Datensatz zu kopieren:
    GlideSysAttachment.copy('sourcetable','sys_id','destinationtable','sys_id');
    Hinweis:
    GlideSysAttachment.Kopieren kopiert alle Anhänge; bestimmte Anhänge können nicht ausgewählt werden.

    Löschen Sie doppelte Anhänge

    Verwenden Sie das folgende Skript in einer Business-Regel, einer geplanten Aufgabe oder einem Hintergrundskript, um doppelte Anhänge in der Tabelle „Anhänge“ [sys_attachment] zu löschen:
    function fixDuplicateImages(){
      var now_GR = new GlideRecord('sys_attachment');
      now_GR.addQuery('table_name','LIKE','ZZ_YY%');
      now_GR.orderBy('table_sys_id');
      now_GR.orderByDesc('sys_created_on');
      now_GR.query();
      var lastID ='not_a_match';
      var lastFile ='not_a_match';
      while(now_GR.next()){
        var isDuplicate = (lastID == now_GR.table_sys_id)&&(lastFile == now_GR.file_name);
        lastID = now_GR.table_sys_id;
        lastFile = now_GR.file_name;
        gs.print(now_GR.table_sys_id + ' ' + now_GR.table_name + ' ' + now_GR.file_name + ' ' + now_GR.sys_created_on + ' ' + isDuplicate);
        if(isDuplicate)
          now_GR.deleteRecord();
      }
    }

    Zeigen Sie an, ob Aufgaben Anhänge in der Listenansicht enthalten

    Verwenden Sie das folgende Skript in einer Business-Regel, um anzuzeigen, ob Aufgaben Anhänge haben, wenn sie in der Datensatzlistenansicht angezeigt werden. Beachten Sie, dass das Skript ein anwenderdefiniertes Feld in der Tabelle „hat Anhänge“ [u_has_attachment] benötigt.
    checkAttachment();
     
    function checkAttachment(){
      // if inserting then the task has an attachment
      if(current.operation()=='insert') {
        hasAttachment('true'); // if deleting attachment check for other attachments
        if(current.operation()=='delete') {
          var timeNow3 =new GlideDateTime();
          gs.log('has_attachment br: gliderecord query start date time is: '+ timeNow3.getNumericValue(),'jwtest');
          var attachCount = new GlideAggregate('sys_attachment');
          attachCount.addQuery('table_sys_id',current.sys_id);
          attachCount.addAggregate('COUNT');
          attachCount.query();
          var numAttachments ='0'; 
    
          // if no other attachments task does not have attachment
          if(attachCount.next()){
            numAttachments = attachCount.getAggregate("COUNT");
            if(numAttachments >0){
              hasAttachment ='true';
            } else {
              hasAttachment('false');
            }
            var timeNow4=new GlideDateTime();
            gs.log('has_attachment br: gliderecord query start date time is: '+ timeNow4.getNumericValue(),'jwtest');
          }
     
    function hasAttachment(answer){
      var task = new GlideRecord('task');
      task.addQuery('sys_id',current.table_sys_id);
      task.query();
     
      if(task.next()){
        task.u_has_attachment= answer;
        task.autoSysFields(false);  //Don't set the lastUpdatedTime or the Simultaneous Update Alert will likely get triggered
        task.setWorkflow(false);  //Don't allow other business rules to run, otherwise multiple notifications will likely be sent
        task.update();
      }
    }
    Hinweis:
    Planen Sie die Ausführung der Business-Regel nach dem Einfügen/Löschen.

    Link zu Anhängen in einer E-Mail-Benachrichtigung

    Verwenden Sie das folgende Skript in einer E-Mail-Benachrichtigung oder Vorlage, um Links zu Anhängen einzufügen:
    
    printattachments(); 
     
    function printattachments(){
      var now_GR =new GlideRecord('sys_attachment');
      now_GR.addQuery('table_sys_id',current.sys_id);
      now_GR.query();
      while(now_GR.next()){
        template.print('Attachment: <a href="http://'+gs.getProperty("instance_name")+'.service-now.com/sys_attachment.do?sys_id='+ now_GR.sys_id+'">'+ now_GR.file_name+'</a>');
      }
    }
    Hinweis:
    Ersetzen Sie „instance_Name“ durch Ihren Instanznamen.

    Anhangprotokollierung

    Jedes Mal, wenn ein Anwender einen Anhang herunterlädt, schreibt die Aktion einen Anhang.Lesen Ereignisdatensatz im Ereignisprotokoll. Bei Bedarf können Sie diese Ereignisse mit einer Skriptaktion oder einer E-Mail-Benachrichtigung verarbeiten. Dies kann nützlich sein, wenn Sie etwas tun möchten, wenn ein Anhang gelesen wird. Sie können beispielsweise aufzeichnen, wann und von wem bestimmte Anhänge heruntergeladen werden. Für diese Funktionalität ist Aktuell Variable muss auf einen sys_attachment-Datensatz verweisen, und der Ereignisdatensatz muss die folgenden Parameter verwenden:
    • Parm1: Dateiname
    • Parm2: Tabellenname