google apps script - Getting Active Spreadsheet Row -


i relatively new google apps script , have been using simple script created year ago triggered when user submits inputs via google form. script has been working until approximately past may , i've been scrambling trying figure out happened when haven't made changes code. have searched many different places , cannot seem find wrong.

basically, have form users complete , submit. upon submission, script takes inputs recent row , stores them in variables assembled email message confirmation acknowledges each user's submitted input.

here code:

function acknowledgement() {  var activesheet = spreadsheetapp.getactivesheet(); var activerow = activesheet.getactiverange().getrow(); var emailaddy = activesheet.getrange("e"+activerow).getvalue(); var locvar = activesheet.getrange("c"+activerow).getvalue(); var employeevar = activesheet.getrange("b"+activerow).getvalue();  var sh = spreadsheetapp.getactivespreadsheet().getsheetbyname("variables"); var contactvar = sh.getrange("a2").getvalue(); var subject = sh.getrange("b2").getvalue(); var contactvar2 = sh.getrange("c2").getvalue();  var linebrk = "<br />";  var msg = "dear " + employeevar + ","     + linebrk + linebrk     + "this confirms have completed review of latest security presentation."     + linebrk + linebrk     + "your location number " + locvar + "."     + "thank participation."     + linebrk + linebrk     + contactvar;  var msghtml = '<p>'+msg+'</p>';  var advancedargs = {cc:contactvar2, htmlbody:msghtml}; mailapp.sendemail(emailaddy, subject, msg, advancedargs);  }; 

what happening code no longer grabbing current row number (i.e. active row submitted user). instead, grabbing top row of sheet (i.e. row headings 'employee name', 'email address', etc.) , assigning row headings variables producing error when trying send email confirmation. instance variable emailaddy contain "email address" causing sendemail fail.

any feedback appreciated!

martin

using getactiverow in context of form submission strange 1 cannot consider user active on sheet... don't know why did choose approach , i'm wondering how happened work long...

there other possibilities handle form submissions 1 need fewest changes in code use getlastrow() instead of getactiverange().getrow()

there few risks use simple "strategy" there might concurrency issues when 2 or more people send form simultaneously. other solution field values directly event properties comes on form submission in case each event unique, no matter how comes spreadsheet script have rewritten more deeply.


Comments