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 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 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
Dans une règle métier, une tâche planifiée ou un script en arrière-plan, utilisez le script suivant 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 des 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 voulez faire quelque chose lorsqu’une pièce jointe est lue. 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