Bulletins


In diesem Tutorial beschreiben wir, wie Sie mit einem 'geplanten Skript' sehr einfach zeitgesteuert Bulletin-E-Mails versnden können, z.B. um täglich einfache Statistiken zum Vortag oder die Anzahlen der angemeldeten Agent zu berichten.

Der unten angezeigte Code erzeugt täglich automatisch einen E-Mail-Bericht in dieser Form:

image-20250918115444-1.png

Erstellen Sie dazu ein 'geplantes Skript' in dieser Form...
 

image-20250918114504-2.png

...und fügen die den Code unten als Skript-code ein.

Passen Sie die Liste der Team-IDs und die Adresse des E-Mail-Empfängers nach Ihren Bedürfnissen an und erweitern Sie den Bericht nach Belieben um eigene Auswertungen.

var teamIDs = "110,21,23,51";
var toemail = "service-lead@mycompany.com";

var Calendar = Java.type("java.util.Calendar");

function getEndOfYesterday() {
   var calendar = Calendar.getInstance();
   calendar.setLenient(true);
   var year = calendar.get(Calendar.YEAR);
   var month = calendar.get(Calendar.MONTH);
   var day = calendar.get(Calendar.DATE);
   calendar.set(year, month, day, 23, 59, 59);
   calendar.add(Calendar.DAY_OF_MONTH, -1);
   return calendar.getTime();
}

function getStartOfYesterday() {
   var calendar = Calendar.getInstance();
   
   calendar.setLenient(true);
   var year = calendar.get(Calendar.YEAR);
   var month = calendar.get(Calendar.MONTH);
   var day = calendar.get(Calendar.DATE);
   calendar.set(year, month, day, 0, 0, 0);
   calendar.add(Calendar.DAY_OF_MONTH, -1);
   return calendar.getTime();
}

var d1 = getStartOfYesterday();
var d2 = getEndOfYesterday();

var tx = helper.getComponentStore().query("select t.addressedWorkgroup.name, t.addressedWorkgroupId,  count(t) from ToDoTask t where t.addressedWorkgroupId in ("+teamIDs+") and t.active and t.state=3 and t.endDate BETWEEN ?1 and ?2 group by t.addressedWorkgroupId, t.addressedWorkgroup.name", d1,d2);

htmlText="<html><head>";
htmlText+="<style>.stattable td, .stattable th { padding: 4px; text-align: left; border: 1px solid lightgrey; }";
htmlText+=".stattable th { background-color: #def5fb;}";
htmlText+=".stattable td { background-color: #f9f9f9;}";
htmlText+=".stattable {border-collapse: collapse;}";
htmlText+="</style>"
htmlText+="</head><body>";
htmlText+="<h2>Daily Service Bulletin</h2>";
htmlText+="<p>Tickets solved yesterday:</p>";
htmlText+="<table class='stattable' style='min-width: 400px;'><tr><th>Team</th><th>Tickets Solved</th></tr>";
for each (var t in tx){
   println(t[0]+ " / "+ t[1] + " / "+ t[2]);
   htmlText+="<tr><td>"+t[0]+"</td><td>"+t[2]+"</td></tr>";
}
htmlText+="</table>";



htmlText+="<p>Agents currently online ("+new java.util.Date().toString()+"):</p>";
htmlText+="<table class='stattable' style='min-width: 400px;'><tr><th>Team</th><th>Agents Online</th></tr>";

var idArr=teamIDs.split(",");
for(var i=0; i<idArr.length; i++){
   var id=idArr[i];
   var team = com.proxemo.todo4.bom.caches.ToDoWorkGroupCache.getInstance().getItemById(id)
   if(team!=null){
       htmlText+="<tr><td>"+team.name+"</td><td>"+com.proxemo.todo4.server.SessionManager.getInstance().numberOfMembersOnline(team.id)+"</td></tr>";
    }
}
htmlText+="</table>";

htmlText+="</body></html>";

helper.sendmail(2, "Daily Service Bulletin", htmlText, toemail, null, null, null, true);