Dave, I have ran into this exact issue...
** The following assumes Project Server 2007 **
You need to use the built-in "Server side event-handlers", and create code
that fires in response to these events. Here's an article describing how to
do this:
http://msdn.microsoft.com/en-us/library/ms469450.aspx
In your case, you'll want to use the "Timesheet->Reviewed" event. This
event fires whenever an approver has finished reviewing a timesheet (Either
by clicking "Approve" or "Reject"). You'll then have to query the timesheet
status value from your database and proceed accordingly.
The "Published" database stores the timesheet's status as an integer from
0-4 in the table "dbo.MSP_TIMESHEETS" under the field "TS_STATUS_ENUM"
0 = "In Progress"
1 = "Submitted"
2 = "Acceptable"
3 = "Approved"
4 = "Rejected"
BASIC PROGRAM FLOW
1) Server-side event is fired on "Approve" or "Reject"
2) Your event handler queries the DB for the TS_STATUS_ENUM values
corresponding to the timesheet that was just reviewed
3) E-mail the user that their timesheet was either 3 (Approved) or 4
(Rejected)
Hope this helps!