Scripts de anexo úteis
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 da nossa comunidade.
Copie anexos de registro para registro
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
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 de 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
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.
Registro em 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