google apps script - Getting TypeError in onFormSubmit trigger? -
i used google forms tutorial tweak form data merge pdf , send email. getting following error message when try run script:
typeerror: cannot read property "values" undefined. (line 11, file "code")
i not know how fix problem. have searched web answer. here copy of script. marked 2 lines script giving error:
var doctemplate = "1zsqmid2bbjtz6pmgqemusjnkhgsfkd1cbsq0rrqk6kc"; var docname = "testcertificate"; // when form gets submitted function onformsubmit(e) { //get information form , set our variables var email_address = "email@example.com"; //**(this error occurring on these 2 lines below!)** var full_name = e.values[2]; var activity = e.values[3]; // document template, copy new temp doc, , save doc’s id var copyid = docslist.getfilebyid(doctemplate) .makecopy(docname+' '+full_name) .getid(); // open temporary document var copydoc = documentapp.openbyid(copyid); // document’s body section var copybody = copydoc.getactivesection(); // replace place holder keys,in our google doc template copybody.replacetext('keyfullname', full_name); copybody.replacetext('keyactivity', activity); // save , close temporary document copydoc.saveandclose(); // convert document pdf var pdf = docslist.getfilebyid(copyid).getas("application/pdf"); // attach pdf , send email var subject = "report"; var body = "here form " + full_name + ""; mailapp.sendemail(email_address, subject, body, {htmlbody: body, attachments: pdf}); // delete temp file docslist.getfilebyid(copyid).settrashed(true); }
here links form , certificate testing.
the error you're seeing because you're running trigger function in script editor. when this, event parameter e
not defined - that's error message saying.
for more background, see how can test trigger function in gas?
here's test function run onformsubmit()
function multiple times, data that's in spreadsheet. reads each row of sheet, generates object simulate event when form submitted, calls trigger function. if place breakpoints inside onformsubmit()
, or rely on logger.log()
, technique allow test trigger function.
function test_onformsubmit() { var datarange = spreadsheetapp.getactivesheet().getdatarange() var data = datarange.getvalues(); var headers = data[0]; // start @ row 1, skipping headers in row 0 (var row=1; row < data.length; row++) { var e = {}; e.values = data[row]; e.range = datarange.offset(row,0,1,data[0].length); e.namedvalues = {}; // loop through headers create namedvalues object (var col=0; col<headers.length; col++) { e.namedvalues[headers[col]] = e.values[col]; } // pass simulated event onformsubmit onformsubmit(e); } }
i've done no other debugging of original function... gets rid of error message, can continue testing.
Comments
Post a Comment