How to return a table in script include

avinashdubey103
Tera Guru

Hi , I have a requirement to return a table in script include :
currently it is giving the table content but not printing in table format 

COde :

var displayRitmTables = Class.create();
displayRitmTables.prototype = {
    generateEmailContent: function(current) {

        var emailContent ="<br> General Information : <br>";

        template.print("<br>General Information :<br>");

    var table = current.getTableName();
    var count = 0;
    if (table == 'sysapproval_approver') {
        count = 1;
    } else {
        for (vars in current.variable_pool) { //Add a condition to check if the variable is not from vs_amdocs_requestor variable set
            if (current.variable_pool[vars].item_option_new_set === 'vs_amdocs_requestor') {
                continue;

            }

            count++;
        }
    }


    if (count > 0) {
        var mvalue = '';
        var list = [];
        var display = [];
        emailContent +='<br><table border="1" style="font-family: Arial;">';

        //Query for the non-empty variables for this record
        //Catalog item and task variables pull from 'sc_item_option_mtom' table
        if (table == 'sc_req_item' || table == 'sc_task' || table == 'sysapproval_approver') {

            //var variablesArray = listOfVariables.split(',');

            var listOfVariables = gs.getProperty('variables_exclude');
            var variablesArray = listOfVariables.split(',');

            var itemVars = new GlideRecord('sc_item_option_mtom');

            if (table == 'sc_req_item') {
                itemVars.addQuery('request_item', current.sys_id);
            }
            if (table == 'sc_task') {
                itemVars.addQuery('request_item', current.request_item.sys_id);
            }
            if (table == 'sysapproval_approver') {
                itemVars.addQuery('request_item', current.sysapproval.sys_id);
            }

            // Construct "NOT IN" logic within the encoded query
            //var notInQuery = 'sc_item_option.sys_idNOT IN' + variablesArray.join(',');
            itemVars.addEncodedQuery("sc_item_option.item_option_new!=9da5f3116f0871009431be4dbb3ee455^sc_item_option.item_option_new!=eb21b5098714f5d0641e98683cbb35fa^sc_item_option.item_option_new!=adbe971d6feb42009431be4dbb3ee4d0^sc_item_option.item_option_new!=54c1901287b68510641e98683cbb3595^sc_item_option.item_option_new!=1dafa1466f8871009674bd5dbb3ee4e2^sc_item_option.item_option_new!=9b7a92bc6f1af1009674bd5dbb3ee42a^sc_item_option.item_option_new!=3aea12bc6f1af1009674bd5dbb3ee4cc^sc_item_option.item_option_new!=9058cc296f03f5009674bd5dbb3ee42f^sc_item_option.item_option_new!=655bde7c6f1af1009674bd5dbb3ee4f0^sc_item_option.item_option_new!=fbe74a176f0331009431be4dbb3ee410^sc_item_option.item_option_new!=fa3c96bc6f1af1009674bd5dbb3ee46a^sc_item_option.item_option_new!=d93687f46f3a21009674bd5dbb3ee467^sc_item_option.item_option_new!=5b93b814dbfc30503780e1aa4b961994^sc_item_option.item_option_new!=d8d44a9a6f47f5009431be4dbb3ee424^sc_item_option.item_option_new!=2667ecb96f074a009431be4dbb3ee4e2^sc_item_option.item_option_new!=c8ed00bf6f6bc2009431be4dbb3ee43e^sc_item_option.item_option_new!=02f485b56f474a009431be4dbb3ee493^sc_item_option.item_option_new!=523cd3fc6f0516409431be4dbb3ee4c5^sc_item_option.item_option_new!=af4a64776fabc2009431be4dbb3ee4b0^sc_item_option.valueISNOTEMPTY^sc_item_option.item_option_new!=4cd8141e0fbc7a00493bbb8ce1050e9e^sc_item_option.item_option_new!=b674ca16dbecec103780e1aa4b96194e^sc_item_option.item_option_new!=be25021adbecec103780e1aa4b96192b^sc_item_option.item_option_new!=7a06c2dadbecec103780e1aa4b96197c^sc_item_option.item_option_new!=36f8ce9edbecec103780e1aa4b96196c^sc_item_option.item_option_new!=54db0537db0a1090396ce2a94b96192b^sc_item_option.item_option_new!=5c782d1287902190641e98683cbb356a^sc_item_option.item_option_new!=09be8a96db2020503780e1aa4b9619c2^sc_item_option.item_option_new!=5d25b3116f0871009431be4dbb3ee4fd^sc_item_option.item_option_new!=5b93b814dbfc30503780e1aa4b961994^sc_item_option.item_option_new!=88b9f0dcdbfc30503780e1aa4b9619b0^sc_item_option.item_option_new!=54db0537db0a1090396ce2a94b96192b^sc_item_option.item_option_new!=cbaace12db2020503780e1aa4b9619d8^sc_item_option.item_option_new!=f93c2108db3cfc103780e1aa4b96197f^sc_item_option.item_option_new!=41673b5b6f76b5009431be4dbb3ee41b");

            //itemVars.addEncodedQuery(notInQuery);
            itemVars.addQuery('sc_item_option.item_option_new.type', '!=', 11);
            itemVars.addQuery('sc_item_option.item_option_new.type', '!=', 19);
            itemVars.addQuery('sc_item_option.item_option_new.type', '!=', 20);
            itemVars.addQuery('sc_item_option.item_option_new.type', '!=', 24);

            itemVars.orderBy('sc_item_option.order');
            itemVars.query();

            while (itemVars.next()) {



                //     if (skipCount > 0) {
                //         skipCount--;
                //         continue;
                //     }
                template.print("<tr>");
                template.print("<td>" + itemVars.sc_item_option.item_option_new.question_text + "</td>");
                mvalue = itemVars.sc_item_option.value;

                // Check if the value is from the reference field
                if (itemVars.sc_item_option.item_option_new.type == '8') {
                    var grRefTable = new GlideRecord(itemVars.sc_item_option.item_option_new.reference);
                    grRefTable.addQuery('sys_id', mvalue);
                    grRefTable.query();
                    if (grRefTable.next()) {
                        mvalue = grRefTable.getDisplayValue();
                    }
                    template.print("<td>" + mvalue + "</td>");
                    template.print("</tr>");
                }

                // Check if the type is List Collector
                if (itemVars.sc_item_option.item_option_new.type == '21') {
                    list = itemVars.sc_item_option.value.split(',');
                    for (var i = 0; i < list.length; i++) {
                        var grListTable = new GlideRecord(itemVars.sc_item_option.item_option_new.list_table);
                        grListTable.addQuery('sys_id', list[i]);
                        grListTable.query();
                        if (grListTable.next()) {
                            display.push(grListTable.getDisplayValue());
                        }
                    }
                    template.print("<td>" + display + "</td>");
                    template.print("</tr>");
                }

                // Check if the type is Select Box
                if (itemVars.sc_item_option.item_option_new.type == '5') {
                    var grQuestion = new GlideRecord('question_choice');
                    grQuestion.addQuery('question', itemVars.sc_item_option.item_option_new);
                    grQuestion.addQuery('value', itemVars.sc_item_option.value.toString());
                    grQuestion.query();
                    if (grQuestion.next()) {
                        mvalue = grQuestion.getValue('text');
                    }
                    template.print("<td>" + mvalue + "</td>");
                    template.print("</tr>");
                }

                //For rest of the types
                if (itemVars.sc_item_option.item_option_new.type != '21' && itemVars.sc_item_option.item_option_new.type != '8' && itemVars.sc_item_option.item_option_new.type != '5') {
                    template.print("<td>" + mvalue + "</td>");
                    template.print("</tr>");
                }
            }
        }
        emailContent +="</table>";
    }

        return emailContent;
    },


    type: 'displayRitmTables'
};
1 ACCEPTED SOLUTION

Aniket Chavan
Tera Sage
Tera Sage

Hello @avinashdubey103 ,

Don't know but somehow my reply got deleted, anyways please give a try to the script below and let me know how it works for you.

var displayRitmTables = Class.create();
displayRitmTables.prototype = {
    generateEmailContent: function (current) {
        var emailContent = "<br> General Information : <br>";

        var table = current.getTableName();
        var count = 0;

        if (table == 'sysapproval_approver') {
            count = 1;
        } else {
            for (vars in current.variable_pool) {
                if (current.variable_pool[vars].item_option_new_set === 'vs_amdocs_requestor') {
                    continue;
                }
                count++;
            }
        }

        if (count > 0) {
            var mvalue = '';
            var list = [];
            var display = [];

            emailContent += '<br><table border="1" style="font-family: Arial;">';

            if (table == 'sc_req_item' || table == 'sc_task' || table == 'sysapproval_approver') {
                var listOfVariables = gs.getProperty('variables_exclude');
                var variablesArray = listOfVariables.split(',');

                var itemVars = new GlideRecord('sc_item_option_mtom');

                if (table == 'sc_req_item') {
                    itemVars.addQuery('request_item', current.sys_id);
                } else if (table == 'sc_task') {
                    itemVars.addQuery('request_item', current.request_item.sys_id);
                } else if (table == 'sysapproval_approver') {
                    itemVars.addQuery('request_item', current.sysapproval.sys_id);
                }

                itemVars.addEncodedQuery("sc_item_option.item_option_newNOT IN" + variablesArray.join(','));
                itemVars.addQuery('sc_item_option.item_option_new.type', 'NOT IN', [11, 19, 20, 24]);
                itemVars.orderBy('sc_item_option.order');
                itemVars.query();

                while (itemVars.next()) {
                    emailContent += "<tr>";
                    emailContent += "<td>" + itemVars.sc_item_option.item_option_new.question_text + "</td>";
                    mvalue = itemVars.sc_item_option.value;

                    if (itemVars.sc_item_option.item_option_new.type == '8') {
                        mvalue = this.getDisplayValueFromReference(itemVars.sc_item_option.item_option_new.reference, mvalue);
                    } else if (itemVars.sc_item_option.item_option_new.type == '21') {
                        list = itemVars.sc_item_option.value.split(',');
                        for (var i = 0; i < list.length; i++) {
                            display.push(this.getDisplayValueFromReference(itemVars.sc_item_option.item_option_new.list_table, list[i]));
                        }
                        mvalue = display.join(', ');
                    } else if (itemVars.sc_item_option.item_option_new.type == '5') {
                        mvalue = this.getDisplayValueFromChoice(itemVars.sc_item_option.item_option_new, mvalue);
                    }

                    emailContent += "<td>" + gs.htmlEscape(mvalue) + "</td>";
                    emailContent += "</tr>";
                }
            }

            emailContent += "</table>";
        }

        return emailContent;
    },

    getDisplayValueFromReference: function (tableName, sysId) {
        var grRefTable = new GlideRecord(tableName);
        if (grRefTable.get(sysId)) {
            return grRefTable.getDisplayValue();
        }
        return sysId;
    },

    getDisplayValueFromChoice: function (itemOption, value) {
        var grQuestion = new GlideRecord('question_choice');
        grQuestion.addQuery('question', itemOption);
        grQuestion.addQuery('value', value.toString());
        if (grQuestion.query() && grQuestion.next()) {
            return grQuestion.getValue('text');
        }
        return value;
    },

    type: 'displayRitmTables'
};

 

Let me know your views on this and Mark Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.

 

Thanks,

Aniket

 

View solution in original post

4 REPLIES 4

avinashdubey103
Tera Guru

@Aniket Chavan 

i am not able to see your suggestion

Aniket Chavan
Tera Sage
Tera Sage

Hello @avinashdubey103 ,

Don't know but somehow my reply got deleted, anyways please give a try to the script below and let me know how it works for you.

var displayRitmTables = Class.create();
displayRitmTables.prototype = {
    generateEmailContent: function (current) {
        var emailContent = "<br> General Information : <br>";

        var table = current.getTableName();
        var count = 0;

        if (table == 'sysapproval_approver') {
            count = 1;
        } else {
            for (vars in current.variable_pool) {
                if (current.variable_pool[vars].item_option_new_set === 'vs_amdocs_requestor') {
                    continue;
                }
                count++;
            }
        }

        if (count > 0) {
            var mvalue = '';
            var list = [];
            var display = [];

            emailContent += '<br><table border="1" style="font-family: Arial;">';

            if (table == 'sc_req_item' || table == 'sc_task' || table == 'sysapproval_approver') {
                var listOfVariables = gs.getProperty('variables_exclude');
                var variablesArray = listOfVariables.split(',');

                var itemVars = new GlideRecord('sc_item_option_mtom');

                if (table == 'sc_req_item') {
                    itemVars.addQuery('request_item', current.sys_id);
                } else if (table == 'sc_task') {
                    itemVars.addQuery('request_item', current.request_item.sys_id);
                } else if (table == 'sysapproval_approver') {
                    itemVars.addQuery('request_item', current.sysapproval.sys_id);
                }

                itemVars.addEncodedQuery("sc_item_option.item_option_newNOT IN" + variablesArray.join(','));
                itemVars.addQuery('sc_item_option.item_option_new.type', 'NOT IN', [11, 19, 20, 24]);
                itemVars.orderBy('sc_item_option.order');
                itemVars.query();

                while (itemVars.next()) {
                    emailContent += "<tr>";
                    emailContent += "<td>" + itemVars.sc_item_option.item_option_new.question_text + "</td>";
                    mvalue = itemVars.sc_item_option.value;

                    if (itemVars.sc_item_option.item_option_new.type == '8') {
                        mvalue = this.getDisplayValueFromReference(itemVars.sc_item_option.item_option_new.reference, mvalue);
                    } else if (itemVars.sc_item_option.item_option_new.type == '21') {
                        list = itemVars.sc_item_option.value.split(',');
                        for (var i = 0; i < list.length; i++) {
                            display.push(this.getDisplayValueFromReference(itemVars.sc_item_option.item_option_new.list_table, list[i]));
                        }
                        mvalue = display.join(', ');
                    } else if (itemVars.sc_item_option.item_option_new.type == '5') {
                        mvalue = this.getDisplayValueFromChoice(itemVars.sc_item_option.item_option_new, mvalue);
                    }

                    emailContent += "<td>" + gs.htmlEscape(mvalue) + "</td>";
                    emailContent += "</tr>";
                }
            }

            emailContent += "</table>";
        }

        return emailContent;
    },

    getDisplayValueFromReference: function (tableName, sysId) {
        var grRefTable = new GlideRecord(tableName);
        if (grRefTable.get(sysId)) {
            return grRefTable.getDisplayValue();
        }
        return sysId;
    },

    getDisplayValueFromChoice: function (itemOption, value) {
        var grQuestion = new GlideRecord('question_choice');
        grQuestion.addQuery('question', itemOption);
        grQuestion.addQuery('value', value.toString());
        if (grQuestion.query() && grQuestion.next()) {
            return grQuestion.getValue('text');
        }
        return value;
    },

    type: 'displayRitmTables'
};

 

Let me know your views on this and Mark Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.

 

Thanks,

Aniket

 

@Aniket Chavan  Thanks

Hello @avinashdubey103 ,

Glad I could assist! If there's anything else you need help with in the future, don't hesitate to ask.

Have a great day!