Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

dynamic population of the rows via email script

tghadage124
Tera Contributor

what i trying to do is add rows to the notifications based on the selected vendor_count. if two is selected then two rows will be populated with the given information. 

 

here is the script : 

(function runMailScript( /* GlideRecord */ current, /* TemplatePrinter */ template,
    /* Optional EmailOutbound */
    email, /* Optional GlideRecord */ email_action,
    /* Optional GlideRecord */
    event) {

    // Initialize the company and requisition GlideRecords
    var company = new GlideRecord('core_company');
    company.get(current.company); // Get company record using the company's sys_id

    var requisition = new GlideRecord('x_jade_procurement_it_purchase_requisition');
    requisition.get(current.sys_id); // Get requisition record using the requisition's sys_id

    // Initialize email body variable
    var emailBody = "";

    // Add company information in table format with blue headers
    emailBody += "<h2>Company Information</h2>";
    emailBody += "<table border='1' style='width:100%; border-collapse: collapse;'>";
   
    // Add blue color to the company table headers
    emailBody += "<tr style='background-color: #007bff; color: white;'>";
    emailBody += "<th>Vendor Name</th>";
    emailBody += "<th>Quotation</th>";
    emailBody += "<th>Unit Quantity</th>";
    emailBody += "<th>Price Per Unit</th>";
    emailBody += "<th>Total</th>";
    emailBody += "</tr>";

    // Add rows for each vendor depending on vendor count
    if (requisition.vendor_count >= 1) {
        // First vendor
        emailBody += "<tr>";
        emailBody += "<td>" + requisition.vendor_1.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.quotation_1.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.unit_quantity_1 + "</td>";
        emailBody += "<td>" + requisition.price_per_unit_1 + "</td>";
        emailBody += "<td>" + requisition.total_1 + "</td>";
        emailBody += "</tr>";
    }

    if (requisition.vendor_count >= 2) {
        // Second vendor
        emailBody += "<tr>";
        emailBody += "<td>" + requisition.vendor_2.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.quotation_2.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.unit_quantity_2 + "</td>";
        emailBody += "<td>" + requisition.price_per_unit_2 + "</td>";
        emailBody += "<td>" + requisition.total_2 + "</td>";
        emailBody += "</tr>";
    }

    if (requisition.vendor_count >= 3) {
        // Third vendor
        emailBody += "<tr>";
        emailBody += "<td>" + requisition.vendor_3.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.quotation_3.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.unit_quantity_3 + "</td>";
        emailBody += "<td>" + requisition.price_per_unit_3 + "</td>";
        emailBody += "<td>" + requisition.total_3 + "</td>";
        emailBody += "</tr>";
    }

    emailBody += "</table>";

    // Add requisition details with blue headers
    emailBody += "<h2>Requisition Details</h2>";
    emailBody += "<table border='1' style='width:100%; border-collapse: collapse;'>";
   
    // Add blue color to the requisition table headers
    emailBody += "<tr style='background-color: #007bff; color: white;'>";
    emailBody += "<th>Requisition Number</th>";
    emailBody += "<th>Requestor Name</th>";
    emailBody += "<th>Assigned To</th>";
    emailBody += "<th>Short Description</th>";
    emailBody += "<th>Delivery Location</th>";
    emailBody += "<th>Status</th>";
    emailBody += "<th>Description</th>";
    emailBody += "<th>Quantity</th>";
    emailBody += "<th>Department</th>";
    emailBody += "</tr>";

    // Ensure requisition record is retrieved successfully before accessing its fields
    if (requisition.isValidRecord()) {
        emailBody += "<tr>";
        emailBody += "<td>" + requisition.requisition_no + "</td>"// Requisition Number
        emailBody += "<td>" + requisition.requester_name.getDisplayValue() + "</td>"// Requestor Name
        emailBody += "<td>" + requisition.assigned_to.getDisplayValue() + "</td>"// Assigned To
        emailBody += "<td>" + requisition.short_description + "</td>"// Short Description
        emailBody += "<td>" + requisition.delivery_location.getDisplayValue() + "</td>"// Delivery Location
        emailBody += "<td>" + requisition.status + "</td>"// Status
        emailBody += "<td>" + requisition.description + "</td>"// Description
        emailBody += "<td>" + requisition.quantity + "</td>"// Quantity
        emailBody += "<td>" + requisition.department.getDisplayValue() + "</td>"// Department
        emailBody += "</tr>";
    } else {
        emailBody += "<tr><td colspan='9'>No requisition details available.</td></tr>";
    }

    emailBody += "</table>";

    // Print email body to template
    template.print(emailBody);

})(current, template, email, email_action, event); 
 
here is the snipate of the email notification : 
tghadage124_0-1730100547477.png

 

here in the company information there will be two rows in the company section if the vendor count is 2 .
script is not working 
 
please help!!
5 REPLIES 5

it should not be else if.. I suggested you to use nested if.. like below

 

if (requisition.vendor_count >= 1) {

 gs.info('getting inside 1st if '+requisition.vendor_count);
    
        emailBody += "<tr>";
        emailBody += "<td>" + requisition.quatation.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.unit_quantity.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.price_per_unit + "</td>";
        emailBody += "<td>" + requisition.total + "</td>";
        emailBody += "</tr>";

     if (requisition.vendor_count >= 2) {
       gs.info('getting inside 2nd if '+requisition.vendor_count);
       
        emailBody += "<tr>";
        emailBody += "<td>" + requisition.quatation.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.unit_quantity.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.price_per_unit + "</td>";
        emailBody += "<td>" + requisition.vender_2.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.qunatity2.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.price_per_unite2 + "</td>";
        emailBody += "<td>" + requisition.total + "</td>";
        emailBody += "</tr>";

    if (requisition.vendor_count >= 3) {
        gs.info('getting inside 3rd if '+requisition.vendor_count);
       
        emailBody += "<tr>";
        emailBody += "<td>" + requisition.quatation.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.unit_quantity.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.price_per_unit + "</td>";
        emailBody += "<td>" + requisition.vender_2.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.qunatity2.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.price_per_unite2 + "</td>";
        emailBody += "<td>" + requisition.vender3.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.quantity3.getDisplayValue() + "</td>";
        emailBody += "<td>" + requisition.price_per_unite3 + "</td>";
        emailBody += "<td>" + requisition.total + "</td>";
        emailBody += "</tr>";
    }
}
}

 

 I have added logs also to check.. please try once and let me know