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.

Restrict User to submit form if User Attach CSV file and contain Invalid email domain

yadi
Tera Contributor

hi,

 

I want to achieve a task in which restrict the users to submit the catalogue item if user attach a csv file and contains invalid email domain in it. Also alert user to highlight the row number in which error occur.

There is only one column in the file.

can somebody help on it.

 thanks.

6 REPLIES 6

@yadi 

what did you start with and where are you stuck?

see if this link helps and enhance your script, I shared solution on how to validate file when file is attached to attachment variable

Validate Excel Data and populate in MRVS 

Validations on MRVS - validate Employee ID 

If my response helped please mark it correct and close the thread so that it benefits future readers.

 

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

hi ankur,

 

 I am using below script but it give me attached error.

var readCSV = Class.create();
readCSV.prototype = Object.extendsObject(AbstractAjaxProcessor, {

 

validateDomainInExcel:function(){
                           
                                var sysId =  this.getParameter('sysparm_sys_id');
                                var domain = this.getParameter('sysparm_domain');
                               
                                var attachmentGR = new GlideRecord('sys_attachment');
                           
                                attachmentGR.addQuery('sys_id', sysId);
                                attachmentGR.orderByDesc('sys_created_on');
                                attachmentGR.query();
                                while(attachmentGR.next()){

                                    var fileName = attachmentGR.getValue('file_name');
                                    if(fileName.endsWith('.csv')){
                                        gs.log(filename);
                                        var sa = new GlideSysAttachment();
                                        var stream = sa.getContentStream(attachmentGR);
                                        var reader = new GlideTextReader(stream);
                                        var line;
                                        var lineNumber = 0;
                                        var invalidRows = [];
                                        while ((line = reader.readLine())!== null){

                                                lineNumber++;
                                                if (lineNumber === 1) continue;
                                                var fields = line.split(',');
                                                var email = fields[0].trim.toLowerCase();
                                                if(!email.endsWith(domain)){

                                                    invalidRows.push(lineNumber);
                                                }
                                        }
                                        if(invalidRows.length>0){

                                            return JSON.stringify({
                                                result : 'invalid',
                                                rows : invalidRows

                                            });
                                        }else{
                                            return JSON.stringify({
                                                result:'valid'
                                            });
                                        }
                                    }
                                }
                                return JSON.stringify({
                                    result: 'no_csv'
                                });

    },  
    type: 'readCSV'
});
 
 
client script:
function onSubmit() {

var sysId = g_form.getValue('add_attachement_here');
var domain = '@test.com';
  var ga = new GlideAjax('readCSV');
  ga.addParam('sysparm_name', 'validateDomainInExcel');

  ga.addParam('sysparm_sys_id', sysId);
  ga.addParam('sysparm_domain', domain);
  ga.getXMLAnswer(function(response){
  var answer = response.responseXML.documentElement.getAttribute("answer");
  var resultObj = JSON.parse(answer);
  if(resultObj.result === 'invalid'){

    alert("Invalid Email Domain found in row (s)" + resultObj.rows.join(','));

  }
  else if (resultObj.result == 'no_csv'){

    alert ("please attach a csv file.");
   

  }
  else{

    return true;
  }
});

   return false;
       
}