Nützliche Anhangsskripte
Dies ist eine durchsuchbare Version der nützlichen Anhangsskripte.
Warnung:
Die hier beschriebene Anpassung wurde für die Verwendung in bestimmten Fällen entwickelt und wird von Now Support nicht unterstützt. Diese Methode wird wie sie ist zur Verfügung gestellt und sollte vor der Implementierung gründlich getestet werden. Veröffentlichen Sie alle Fragen und Kommentare zu dieser Anpassung in unserem Community-Forum.
Anhänge von Datensatz zu Datensatz kopieren
Verwenden Sie das folgende Skript, um einen Anhang von einem Datensatz in einen anderen Datensatz zu kopieren:
GlideSysAttachment.copy('sourcetable','sys_id','destinationtable','sys_id');
Hinweis:
GlideSysAttachment.copy kopiert alle Anhänge. Es kann keine bestimmten Anhänge auswählen.
Doppelte Anhänge löschen
Verwenden Sie das folgende Skript in einer Geschäftsregel, einer regelmäßigen Aufgabe oder einem Hintergrund-Skript, um doppelte Anhänge, die sich in der Tabelle „Anhänge“ [sys_attachment] befinden, zu löschen:
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();
}
}Anzeigen, ob Aufgaben Anhänge in der Listenansicht haben
Verwenden Sie das folgende Skript in einer Geschäftsregel, um anzuzeigen, ob Aufgaben Anhänge haben, wenn sie in der Datensatzlistenansicht angezeigt werden. Beachten Sie, dass das Skript ein benutzerdefiniertes Feld in der Tagbelle „Hat Anhänge“ [u_has_attachments] benötigt.
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();
}
}
Hinweis:
Planen Sie, dass die Geschäftsregel nach dem Einfügen/Löschen ausgeführt wird.
Link zu Anhängen in einer E-Mail-Benachrichtigung
Verwenden Sie das folgende Skript in einer E-Mail-Benachrichtigung oder Vorlage, um Links zu Anhängen einzubinden:
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>');
}
}
Hinweis:
Ersetzen Sie „instance_name“ durch Ihren Instanznamen.
Anhangsprotokollierung
Wenn ein Benutzer einen Anhang herunterlädt, schreibt die Aktion einen attachment.read-Ereignisdatensatz im Ereignisprotokoll. Auf Wunsch können Sie diese Ereignisse mit einer Skriptaktion oder einer E-Mail-Benachrichtigung verarbeiten. Dies kann nützlich sein, wenn Sie etwas tun möchten, wenn ein Anhang gelesen wird. Sie können beispielsweise aufzeichnen, wann und von wem bestimmte Anhänge heruntergeladen werden. Für diese Funktionalität muss die Variable aktuell auf einen sys_attachment-Datensatz zeigen und der Ereignisdatensatz muss die folgenden Parameter verwenden:
- parm1: Dateiname
- parm2: Tabellenname