Date/Time Stamping a Scheduled Report's Attachment(s)

Jim Coyne
Kilo Patron

I've seen a couple requests to add a date/time stamp to the attachment of a Scheduled Report.   Capa JC shows us how to add this to the email's subject in this post (When configuring a Scheduled), but doing it on an attachment is still not possible.   Until now.

 

A nice little workaround with a Business Rule on the Email table is all you need.   When you configure your Scheduled Report, add "~!~rename_attachment~!~" as a prefix to the Subject to act as a trigger for the Business Rule (e.g. "~!~rename_attachment~!~Active Change Requests").

 

Next, add the following Business Rule:

 

Name: Custom - Rename Scheduled Report Attachments
Table: Email [sys_email]
When: before
Insert: checked
Condition: current.subject.indexOf("~!~rename_attachment~!~") > -1 && current.hasAttachments()
Script:


(function(){
         var splitter = "~x~y~z";
         current.subject = current.subject.replace("~!~rename_attachment~!~", "");
         var gr = new GlideRecord("sys_attachment");
         gr.addQuery("table_name", "sys_email");
         gr.addQuery("table_sys_id", current.getValue("sys_id"));
         gr.query();
         while (gr.next()) {
                   var fileName = gr.getValue("file_name");
                   var parts = fileName.split(".");
                   var dateCreated = splitter + gr.getValue("sys_created_on");
                   parts.splice(-1, 0, dateCreated);
                   fileName = parts.join(".").replace("." + splitter, "-");
                   gr.file_name = fileName;
                   gr.update();
         }
})();

 

The Business Rule queries the attachments, grabs each file name, splits it apart, inserts the created date, joins it back together and then finally updates the record with the new file name.

 

Simple

1 ACCEPTED SOLUTION

Jim Coyne
Kilo Patron

Just setting this answer as correct as the actual thread was not meant as a question and it cannot be changed because it came from the original Community site.

View solution in original post

26 REPLIES 26

indu dillibabu
Tera Contributor

Hi All,

   The above business rule helped but it didnt work for 00:00:00 to 00:59:00 ,during this time duration it takes yesterday's date instead of today's date.

  could someone let me know the solution for it.

this is my code:-

(function(){
var splitter = "~x~y~z";
var finaldate = "";
current.subject = current.subject.replace("~!~rename_attachment2~!~ ", "");
var gr = new GlideRecord("sys_attachment");
gr.addQuery("table_name", "sys_email");
gr.addQuery("table_sys_id", current.getValue("sys_id"));
gr.query();
while (gr.next()) {
var fileName = gr.getValue("file_name");
var parts = fileName.split(".");
var gDateTime = new GlideDateTime(gr.getValue('sys_created_on'));
var gDate = gDateTime.getDate();
var longDateTime = gDate.getByFormat('dd-MM-yyyy');
var dateCreated = splitter + longDateTime;
parts.splice(-1, 0, dateCreated);
fileName = parts.join(".").replace("." + splitter, " ");
gr.file_name = fileName;
gr.update();
}
})();

Pankaj Jadhav
Tera Contributor

Thank you, Jim Coyne. It worked for me.