I face a problem when the notification becomes to long. I've extended Nautius' post (very helpful).
Adding the 25th row results in: TranslateVariables->Infinite loop error on string
I think it is related to the number of variables that need to be processed to create the notification email. When I added an extra column, I needed to lower the number of rows to 24 to work around the error (TranslateVariables->Infinite loop error on string)
<!DOCTYPE html>
<html>
<body>
<table>
<tr><td valign="top">batch</td> <td>{JOB(Active|Name)}</td><td></td><td></td></tr>
<tr><td valign="top"></td> <td>{JOB(Active|Desc)}</td><td></td><td></td></tr>
<tr><td valign="top">status</td> <td><b>{JOB(Active|Result)}</b></td><td></td><td></td></tr>
<tr><td valign="top">duration</td><td>{JOB(Active|ExecutionTime|hh\:mm\:ss)}</td><td></td><td></td></tr>
<tr><td valign="top">start</td> <td>{JOB(Active|LastRun|d/MM/yyyy H:mm)}</td><td></td><td></td></tr>
<tr><td valign="top">end</td> <td>{JOB(Active|LastExited|d/MM/yyyy H:mm)}</td><td></td><td></td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|1|{TASK(1,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|1|<td valign="top">1.</td> <td>{TASK(1|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(1,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(1,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|2|{TASK(2,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|2|<td valign="top">2.</td> <td>{TASK(2|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(2,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(2,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|3|{TASK(3,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|3|<td valign="top">3.</td> <td>{TASK(3|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(3,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(3,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|4|{TASK(4,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|4|<td valign="top">4.</td> <td>{TASK(4|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(4,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(4,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|5|{TASK(5,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|5|<td valign="top">5.</td> <td>{TASK(5|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(5,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(5,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|6|{TASK(6,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|6|<td valign="top">6.</td> <td>{TASK(6|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(6,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(6,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|7|{TASK(7,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|7|<td valign="top">7.</td> <td>{TASK(7|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(7,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(7,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|8|{TASK(8,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|8|<td valign="top">8.</td> <td>{TASK(8|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(8,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(8,Result)}|Disabled|)}|)}</td></tr>
<tr> {LOGIC(If|String|{TASK(Active,Order)}|==|9|{TASK(9,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|9|<td valign="top">9.</td> <td>{TASK(9|LastRun|d/MM/yyyy H:mm)}</td> <td>{TASK(9,Name)}</td> <td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(9,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|10|{TASK(10,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|10|<td valign="top">10.</td><td>{TASK(10|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(10,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(10,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|11|{TASK(11,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|11|<td valign="top">11.</td><td>{TASK(11|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(11,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(11,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|12|{TASK(12,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|12|<td valign="top">12.</td><td>{TASK(12|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(12,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(12,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|13|{TASK(13,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|13|<td valign="top">13.</td><td>{TASK(13|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(13,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(13,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|14|{TASK(14,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|14|<td valign="top">14.</td><td>{TASK(14|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(14,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(14,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|15|{TASK(15,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|15|<td valign="top">15.</td><td>{TASK(15|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(15,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(15,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|16|{TASK(16,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|16|<td valign="top">16.</td><td>{TASK(16|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(16,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(16,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|17|{TASK(17,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|17|<td valign="top">17.</td><td>{TASK(17|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(17,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(17,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|18|{TASK(18,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|18|<td valign="top">18.</td><td>{TASK(18|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(18,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(18,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|19|{TASK(19,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|19|<td valign="top">19.</td><td>{TASK(19|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(19,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(19,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|20|{TASK(20,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|20|<td valign="top">20.</td><td>{TASK(20|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(20,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(20,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|21|{TASK(21,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|21|<td valign="top">21.</td><td>{TASK(21|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(21,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(21,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|22|{TASK(22,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|22|<td valign="top">22.</td><td>{TASK(22|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(22,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(22,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|23|{TASK(23,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|23|<td valign="top">23.</td><td>{TASK(23|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(23,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(23,Result)}|Disabled|)}|)}</td></tr>
<tr>{LOGIC(If|String|{TASK(Active,Order)}|==|24|{TASK(24,Name)}|)}{LOGIC(If|String|{TASK(Active,Order)}|==|24|<td valign="top">24.</td><td>{TASK(24|LastRun|d/MM/yyyy H:mm)}</td><td>{TASK(24,Name)}</td><td>{LOGIC(If|String|{TASK(Active|IsActive)}|==|True|{TASK(24,Result)}|Disabled|)}|)}</td></tr>
</table>
</body>
</html>