Assignment Reminder Emails

For users who don't visit the application very often, it may be useful to send out a reminder email to them if they have outstanding assignments that need to be actioned.

You can do this by adding a couple of scripts to your application.

First, add a global action (go to the Application record for your app, click the hamburger and select "Actions", then click "+"). Call the action Send My Reminders. In the script, put this:

// get this user's assignments and send them out in an email
var #list = workflow:GetAssignments()
var #otherList = NewList()
loop through #list as #p
		add #p to #otherList
end loop
var #toAdd = NewList()
add record ( Name="Assignments", List=#otherList) to #toAdd

var #ws = str:Trim(GetWebServerName(), "/")
if Count(#list)>0 then
	var #lines = NewList()
	var #body = ""
	add "You have " + Count(#list) + " items in " + GetAppName() + " assigned to user '" + UserName() + "'.<p>" to #lines
	loop through #toAdd as #a
		if Exists(#a/List) then
			add "<u>" + #a/Name + "</u><p>" to #lines
			add "<ul>" to #lines
			loop through #a/List as #app
					add "<li>" to #lines
					add "<a href='" + #ws + "/" + #app/URL + "'>" + #app/RelatedName + "</a>" to #lines
					add "</li>" to #lines
			end loop
			add "</ul>" to #lines
		end if
	end loop
	set #body = str:Join(#lines, "<p>", "")
	call EMailUser(GetUser(), GetAppName() + ": " + Count(#list) + " items assigned to " + UserName(), #body, null)
end if 

Next, go to the Application configuration again (in Designer), click the hamburger and select "Scheduled Jobs". Add an entry in there, call it "Reminder Emails", and in the Preferred Time put 7am, or some time in the morning. In the Script part, put this: 

elevate on
loop through load(&root/Users) as #user
    [suppress errors] run task "SendMyReminders" at &root with record () as #user
    if Exists(#error) then
        log "Reminders Job: " + #error
    end if
end loop
log "Done sending reminders"

This will then send all users who have outstanding assignments an email each morning with a list of those assignments, and links to the relevant record. 

You can modify the Scheduled Job script so that users have to sign-up for the reminders, by putting a filter on &root/Users, eg. instead it could say load(&root/Users[SendReminders=True]) to only include users who have SendReminders set to Yes. Then you'll need to add a Boolean field called Send Reminders to the Users tab. Once you do that, they must set that to Yes on their own user record in order to get the reminder email each day. 


Next Topic:
v4.2.0.956 (beta)
Up Since 2/29/2024 12:02:23 AM