GlideSysAttachment - com escopo

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 5 min. de leitura
  • A API GlideSysAttachment fornece métodos para lidar com anexos.

    O conteúdo é retornado como uma cadeia de caracteres, não como uma matriz de bytes quando getContent() é chamado.

    O conteúdo é retornado como um objeto GlideScriptableInputStream quando getContentStream() é chamado. O GlideScriptableInputStream contém os bytes reais não convertidos em uma cadeia de caracteres.

    GlideSysAttachment com escopo - GlideSysAttachment()

    Cria uma instância da classe GlideSysAttachment.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Nenhum

    GlideSysAttachment com escopo - copy(cadeia de caracteres sourceTable, cadeia de caracteres sourceID, cadeia de caracteres targetTable, cadeia de caracteres targetID)

    Copia anexos do registro de origem para o registro de destino.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    sourceTable Cadeia de caracteres Nome da tabela com os anexos a serem copiados.
    sourceID Cadeia de caracteres sys_id da tabela de origem.
    targetTable Cadeia de caracteres Nome da tabela na qual os anexos serão adicionados.
    ID do destino Cadeia de caracteres sys_id da tabela de destino.
    Tabela 3. Retorna
    Tipo Descrição
    Cadeia de caracteres Matriz de sys_ids dos anexos que foram copiados.
    var attachment = new GlideSysAttachment();
    var incidentSysID = 'ab1b30031b04ec101363ff37dc4bcbfc';
    var incGR = new GlideRecord('incident');
    incGR.get(incidentSysID);
    
    var copiedAttachments = attachment.copy('incident', incidentSysID, 'problem', incGR.getValue('problem_id'));
    gs.info('Copied attachments: ' + copiedAttachments);

    Saída:

    Copied attachments: 6e4621df1bc420501363ff37dc4bcbb0,a87769531b0820501363ff37dc4bcba2

    GlideSysAttachment com escopo - deleteAttachment(cadeia de caracteres attachmentID)

    Exclui o anexo indicado.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    ID do anexo Cadeia de caracteres sys_id do anexo.
    Tabela 5. Retorna
    Tipo Descrição
    vazio
    var attachment = new GlideSysAttachment();
    var attachmentSysID = 'a87769531b0820501363ff37dc4bcba2';
    attachment.deleteAttachment(attachmentSysID);

    GlideSysAttachment com escopo - getAttachments(cadeia de caracteres "tableName", cadeia de caracteres sys_id)

    Retorna um GlideRecord que contém os metadados do anexo correspondente, como nome, tipo ou tamanho.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    tableName Cadeia de caracteres Nome da tabela à qual o anexo pertence; por exemplo, incidente.
    sys_id Cadeia de caracteres Sys_id do registro ao qual o anexo pertence.
    Tabela 7. Retorna
    Tipo Descrição
    GlideRecord Objeto GlideRecord que contém os metadados do anexo correspondente, como nome, tipo ou tamanho.

    O script a seguir lista os nomes de arquivo de anexo para um registro com dois anexos.

    var attachment = new GlideSysAttachment();
    
    var agr = attachment.getAttachments('<table_name>', '<record_sys_id>');
    
    while(agr.next())
    gs.info(agr.getValue('file_name'));

    Saída:

    *** Script: filename1.txt
    *** Script: filename2.txt

    GlideSysAttachment com escopo - getContent(GlideRecord sysAttachment)

    Retorna o conteúdo do anexo como uma cadeia de caracteres.

    Este método é para uso somente em aplicações com escopo. Este método retorna indefinido quando usado no escopo global. Para ler o conteúdo do anexo no escopo global, use o método getContentStream da API GlideSysAttachment - Global.

    Este método é compatível com os seguintes tipos de arquivo para anexos.
    • CSV (*.csv)
    • JSON (*.json)
    • Texto (*.txt)
    Tabela 8. Parâmetros
    Nome Tipo Descrição
    sysAttachment GlideRecord Registro de anexo.
    Tabela 9. Retorna
    Tipo Descrição
    Cadeia de caracteres Conteúdos do anexo como uma cadeia de caracteres. Retorna até 5 MB de dados.
    var attachment = new GlideSysAttachment();
    
    var agr = attachment.getAttachments('incident', '78271e1347c12200e0ef563dbb9a7109'); //create attachment GlideRecord
    
    while(agr.next()) { //for each attachment on the incident record
       gs.info(agr.getValue('file_name')); //print file name of attachment
       var attachmentContent = attachment.getContent(agr);
       gs.info('Attachment content: ' + attachmentContent); //print attachment content
    }

    Saída:

    Doc1.txt
    Attachment content: I am text in a txt file attached to a record.

    GlideSysAttachment com escopo - getContentBase64(GlideRecord sysAttachment)

    Retorna o conteúdo do anexo como uma cadeia de caracteres com codificação base64.

    Este método é para uso somente em aplicações com escopo. Este método retorna indefinido quando usado no escopo global. Para ler o conteúdo do anexo no escopo global, use o método getContentStream da API GlideSysAttachment - Global.

    Tabela 10. Parâmetros
    Nome Tipo Descrição
    sysAttachment GlideRecord Registro de anexo.
    Tabela 11. Retorna
    Tipo Descrição
    Cadeia de caracteres Conteúdos do anexo como uma cadeia de caracteres com codificação base64. Retorna até 5 MB de dados.
    var attachment = new GlideSysAttachment();
    
    var agr = attachment.getAttachments('incident', '78271e1347c12200e0ef563dbb9a7109'); //create attachment GlideRecord
    
    while(agr.next()) { //for each attachment on the incident record
       gs.info(agr.getValue('file_name')); //print file name of attachment
       var attachmentContent = attachment.getContentBase64(agr);
       gs.info('Attachment content: ' + attachmentContent); //print attachment content
    }

    Saída:

    Doc1.txt
    Attachment content: SSBhbSB0ZXh0IGluIGEgdHh0IGZpbGUgYXR0YWNoZWQgdG8gYSByZWNvcmQuIA0=

    GlideSysAttachment com escopo - getContentStream(String sysID)

    Retorna um objeto GlideScriptableInputStream de acordo com o sys_id de um anexo.

    Você pode usar a API GlideTextReader para ler o fluxo de conteúdo.

    Tabela 12. Parâmetros
    Nome Tipo Descrição
    sysID Cadeia de caracteres sys_id do anexo.
    Tabela 13. Retorna
    Tipo Descrição
    GlideScriptableInputStream Fluxo que contém o conteúdo do anexo.
    var attachment = new GlideSysAttachment();
    var attachmentSysID = '6e4621df1bc420501363ff37dc4bcbb0';
    var attachmentContentStream = attachment.getContentStream(attachmentSysID);
    gs.info('Attachment content stream: ' + attachmentContentStream);

    Saída:

    Attachment content stream: com.glide.communications.GlideScriptableInputStream@14bd299

    GlideSysAttachment com escopo - write(GlideRecord record, String fileName, String contentType, String content)

    Anexa um anexo especificado ao registro especificado.

    Tabela 14. Parâmetros
    Nome Tipo Descrição
    registro GlideRecord Registro ao qual o anexo será anexado.
    NomeDoArquivo Cadeia de caracteres Nome do arquivo de anexo.
    contentType Cadeia de caracteres Tipo de conteúdo de anexo.
    conteúdo Cadeia de caracteres Conteúdo do anexo.
    Tabela 15. Retorna
    Tipo Descrição
    Cadeia de caracteres sys_id do anexo. Retorna nulo se o anexo não tiver sido adicionado.
    var attachment = new GlideSysAttachment();
    
    //set up inputs
    var rec = new GlideRecord('incident');
    rec.get('78271e1347c12200e0ef563dbb9a7109');
    var fileName = 'example.txt';
    var contentType = 'text/csv';
    var content = 'The text that is stored inside my file';
    
    var agr = attachment.write(rec, fileName, contentType, content);
    
    gs.info('The attachment sys_id is: ' + agr);

    Saída:

    The attachment sys_id is: 01271e4317c13311e0ef563dbb9abe34

    GlideSysAttachment com escopo - writeBase64(GlideRecord now_GR, cadeia de caracteres fileName, cadeia de caracteres contentType, cadeia de caracteres content_base64Encoded)

    Insere um anexo no registro especificado usando conteúdo codificado em base64.

    Tabela 16. Parâmetros
    Nome Tipo Descrição
    now_GR GlideRecord Registro ao qual o anexo será anexado.
    NomeDoArquivo Cadeia de caracteres Nome do arquivo do anexo.
    contentType Cadeia de caracteres Tipo de conteúdo do anexo.
    conteúdo Cadeia de caracteres Conteúdo do anexo no formato base64.
    Tabela 17. Retorna
    Tipo Descrição
    Cadeia de caracteres Sys_id do anexo criado.
    var attachment = new GlideSysAttachment();
    
    var rec = new GlideRecord('incident');
    var incidentSysID = 'ab1b30031b04ec101363ff37dc4bcbfc';
    rec.get(incidentSysID);
    var fileName = 'example.txt';
    var contentType = 'text/csv';
    var base64Encodedcontent = 'SSBhbSB0ZXh0Lg==';
    
    var agr = attachment.writeBase64(rec, fileName, contentType, base64Encodedcontent);
    
    gs.info('The attachment sys_id is: ' + agr);

    Saída:

    The attachment sys_id is: 10cde9971b0820501363ff37dc4bcba6

    GlideSysAttachment com escopo - writeContentStream(GlideRecord now_GR, cadeia de caracteres fileName, cadeia de caracteres contentType, GlideScriptableInputStream inputStream)

    Insere um anexo usando o fluxo de entrada.

    Tabela 18. Parâmetros
    Nome Tipo Descrição
    now_GR GlideRecord Registro ao qual o anexo será anexado.
    NomeDoArquivo Cadeia de caracteres Nome do arquivo do anexo.
    contentType Cadeia de caracteres Tipo de conteúdo do anexo.
    conteúdo GlideScriptableInputStream Conteúdo do anexo.
    Tabela 19. Retorna
    Tipo Descrição
    Cadeia de caracteres Sys_id do anexo criado.

    Anexa um fluxo de conteúdo da tabela sys_attachment a um registro test_table.

    function copyAttachmentToGlideRecord(conceptSysId) {
    
      // Get record from test_table using sys_id
      var targetGlideRecord = new GlideRecord("test_table");
      if (!targetGlideRecord.get(conceptSysId)) {
         throw ("Cannot find record created by test with sys_id: " + conceptSysId);
      }
    
      // Get record from sys_attachment table
      var sourceAttachmentGlideRecord = new GlideRecord('sys_attachment');    
      sourceAttachmentGlideRecord.query();
      sourceAttachmentGlideRecord.next();
    
      // Get field values from retrieved sys_attachment record
      var fileName = sourceAttachmentGlideRecord.getValue('file_name');
      var contentType = sourceAttachmentGlideRecord.getValue('content_type');
      var sourceAttachmentSysId = sourceAttachmentGlideRecord.getValue('sys_id');
    
      // Attach sys_attachment record content stream to test_table record
      var gsa = new GlideSysAttachment();
      gsa.writeContentStream(
        targetGlideRecord,
        fileName,
        contentType,
        gsa.getContentStream(sourceAttachmentSysId));
      gs.info("Attachment created");
    }