---
sourceDocument: Yokohama Administração da Now Platform
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/yokohama/platform-administration

 Release :

    - yokohama

ft:locale :

    - pt-BR

ft:publication_title :

    - Yokohama Administração da Now Platform

ft:clusterId :

    - platadm

bundleId :

    - platadm

workflow :

    - Platform


---

# Scripts de anexo úteis

# Scripts de anexo úteis {#ariaid-title1}

* Versão de lançamento: Yokohama
* 
* Atualizado 30 de jan. de 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 min. de leitura

Esta é uma versão pesquisável dos scripts de anexo úteis.
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](http://community.service-now.com/) da nossa comunidade.

## Copie anexos de registro para registro {#r_UsefulAttachmentScripts__section_tmk_db2_mgb}

Use o script a seguir para copiar um anexo de um registro para outro registro:

    GlideSysAttachment.copy('sourcetable','sys_id','destinationtable','sys_id');

Nota:  
GlideSysAttachment.copy copia todos os anexos; não é possível selecionar anexos específicos.

## Exclua anexos duplicados {#r_UsefulAttachmentScripts__section_unw_kl2_mgb}

Use o script a seguir em uma regra de negócios, trabalho agendado ou script em segundo plano para excluir anexos duplicados localizados na tabela Anexos \[sys_attachment\]:

    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();
      }
    }

## Exibir se as tarefas têm anexos na exibição de lista

Use o script a seguir em uma regra de negócios para exibir se as tarefas têm anexos quando exibidas na exibição da lista de registros. Observe que o script precisa de um campo personalizado na tabela Tem anexos \[u_has_attachments\].

    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();
      }
    }

Nota:  
Programe a regra de negócio para ser executada após inserir/excluir.

## Link para anexos em uma notificação por e-mail {#r_UsefulAttachmentScripts__section_h2h_jm2_mgb}

Use o script a seguir em uma notificação por e-mail ou modelo para incluir links para anexos:


    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>');
      }
    }

Nota:  
Substitua "instance_name" pelo nome da sua instância.

## Log de anexo

Sempre que um usuário baixa um anexo, a ação grava um anexo.lido registro de evento para o log de eventos. Se desejar, você pode processar esses eventos com uma ação de script ou uma notificação por e-mail. Isso pode ser útil se você quiser fazer algo quando um anexo for lido. Por exemplo, você pode registrar quando e por quem determinados anexos são baixados. Para esta funcionalidade, o. atual a variável deve apontar para um registro sys_attachment e o registro de evento deve usar os seguintes parâmetros:

* Parm1: Nome do arquivo
* Parm2: Nome da tabela
{#r_UsefulAttachmentScripts__ul_m5j_1kw_wp}
**Conceitos relacionados**   

* [JavaScript em e-mails](https://servicenow-prod.fluidtopics.net/sOHTDhZPMzSb5V07CgEVRQ "Crie scripts de e-mail em Notificações do sistema > E-mail > Script de e-mail de notificação , e consulte-os usando mail_script:nome do script no campo de script.")  
**Referência relacionada**   

* [API de script de e-mail](https://servicenow-prod.fluidtopics.net/U0xJW14yRiT8nTCFdXcMmw "Algumas variáveis estão disponíveis ao processar scripts mail_script.")
* [Script de exemplo para notificações por e-mail](https://servicenow-prod.fluidtopics.net/7Pxpdphh9OyShpr981IoyA "Exemplos de script para notificações por e-mail.")

