Scripts de pièces jointes utiles
Il s’agit d’une version consultable des scripts de pièces jointes utiles.
Avertissement :
La personnalisation décrite ici a été développée pour être utilisée dans des instances spécifiques et n’est pas prise en charge par Now Support. Cette méthode est fournie telle quelle et doit être testée minutieusement avant sa mise en œuvre. Posez toutes les questions et tous les commentaires concernant cette personnalisation sur notre forum de la communauté.
Copier les pièces jointes d’un enregistrement à l’autre
Utilisez le script suivant pour copier une pièce jointe d’un enregistrement vers un autre enregistrement :
GlideSysAttachment.copy('sourcetable','sys_id','destinationtable','sys_id');
Remarque :
GlideSysAttachment.copy copie toutes les pièces jointes ; Il ne peut pas sélectionner de pièces jointes spécifiques.
Supprimer les pièces jointes en double
Utilisez le script suivant dans une règle métier, un travail planifié ou un script en arrière-plan pour supprimer les pièces jointes en double situées dans la table Pièces jointes [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();
}
}Afficher si les tâches ont des pièces jointes dans la vue de liste
Utilisez le script suivant dans une règle métier pour afficher si les tâches ont des pièces jointes lorsqu’elles sont affichées dans la vue de liste d’enregistrements. Notez que le script a besoin d’un champ personnalisé dans la table A des pièces jointes [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();
}
}
Remarque :
Planifiez l’exécution de la règle métier après l’insertion/la suppression.
Lien vers les pièces jointes dans une notification par e-mail
Utilisez le script suivant dans une notification ou un modèle par e-mail pour inclure des liens vers des pièces jointes :
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>');
}
}
Remarque :
Remplacez « instance_name » par le nom de votre instance.
Journalisation des pièces jointes
Chaque fois qu’un utilisateur télécharge une pièce jointe, l’action écrit un enregistrement d’événement attachment.read dans le journal des événements. Si vous le souhaitez, vous pouvez traiter ces événements avec une action de script ou une notification par e-mail. Cela peut être utile si vous souhaitez effectuer une action lors de la lecture d’une pièce jointe. Par exemple, vous pouvez enregistrer quand et par qui certaines pièces jointes sont téléchargées. Pour cette fonctionnalité, la variable actuelle doit pointer vers un enregistrement sys_attachment et l’enregistrement d’événement doit utiliser les paramètres suivants :
- parm1 : nom de fichier
- parm2 : nom de table