Sim Greenbaum
02/21/2024, 5:29 PMfunction summarize(summary) {let body = emailMailer.createEmailObjectFromData(summary, {
type,
});
emailMailer.sendEmail(body, type);
}}
function createEmailObjectFromData(summary, typeHeaders) {
let errorCount = 0;
let tableRow = "";
summary.output.iterator().each(function (key, error) {
var errorObject = JSON.parse(error);
errorCount++;
tableRow += createTableRow(errorObject, errorCount);
});
let response =
errorCount != 0 ? createBodyEmail(tableRow, typeHeaders) : errorCount;
log.audit("errorCount", errorCount);
return response;
}
erictgrubaugh
02/21/2024, 5:33 PMerictgrubaugh
02/21/2024, 5:34 PMsummary.output.iterator().each((key, error) => {
// ... callback logic
return true; // continue iterating
})
erictgrubaugh
02/21/2024, 5:35 PMeach()
method from N/search
or N/query
erictgrubaugh
02/21/2024, 5:40 PMsummarize
stages to compile all the errors from all other stages:
const parseErrors = (summary) => {
let errors = []
if (summary.inputSummary.error) {
errors.push(summary.inputSummary.error)
}
summary.mapSummary.errors.iterator().each((k, e) => errors.push(e))
summary.reduceSummary.errors.iterator().each((k, e) => errors.push(e))
return errors;
}
Note that because my arrow functions in my each()
callbacks don't use braces, they are returning the result of errors.push()
which is why iteration continues without an explicit return
statementSim Greenbaum
02/21/2024, 5:42 PMSim Greenbaum
02/21/2024, 5:46 PMreturn
statement on non arrow fuctionserictgrubaugh
02/21/2024, 6:14 PMSim Greenbaum
02/21/2024, 6:22 PMSim Greenbaum
02/22/2024, 4:52 PMlet data = summary. output;