Scripts de pièces jointes utiles
Il s’agit d’une version interrogeable des scripts de pièces jointes utiles.
Avertissement :
La personnalisation décrite ici a été développée pour une utilisation 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 rigoureusement avant d'être implémentée. Publiez toutes les questions et commentaires concernant cette personnalisation dans notre forum communautaire.
Copier les pièces jointes d’un enregistrement à l’autre
Utilisez le script suivant pour copier une pièce jointe d’un enregistrement à un autre :
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, une tâche planifiée 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 indiquer 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.
Lier à des pièces jointes dans une notification par e-mail
Utilisez le script suivant dans une notification par e-mail ou un modèle pour inclure des liens vers les 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 des scripts ou une notification par e-mail. Cela peut être utile si vous voulez faire quelque chose lorsqu’une pièce jointe est lue. Par exemple, vous pouvez indiquer quand et par qui certaines pièces jointes sont téléchargées. Pour cette fonctionnalité, la variable actuelle doit pointer vers un enregistrement de sys_attachment et l’enregistrement d’événement doit utiliser les paramètres suivants :
- parm1 : nom du fichier
- parm2 : nom de la table