javascript - Function not executing with defined variables -
the gist of project is: have google form answers populated on google doc, let's call doc template. template copied never overwrite original. copy converted pdf, sent email, , moved specific folder on drive. function happens flawlessly every form submission , gets triggered on submit. next function supposed send copied doc google cloud print, i'm having trouble writing code that. have point print doc on form submit, have define doc's id. unfortunately id not static since new doc made every submission. here's full code minus sensitive information:
// work order // template google docs , name var doctemplate = ""; // *** replace template id *** var docname = "work order"; function adddates() { var date = new date(); // form date var holiday = ["09/04/2017", "10/09/2017", "11/23/2017", "12/24/2017", "12/25/2017", "01/01/2018"]; //define holiday dates in mm/dd/yyyy var days = 5; //no of days want add date.setdate(date.getdate()); var counter = 0; if (days > 0) { while (counter < days) { date.setdate(date.getdate() + 1); var check = date.getday(); var holidaycheck = holiday.indexof(utilities.formatdate(date, "edt", "mm/dd/yyyy")); if (check != 0 && check != 6 && holidaycheck == -1) { counter++; } } } logger.log(date) //for example give 08/16/2017 return date; } function createnewdoc(values) { //get information form , set variables var email_address = ""; var job_name = values[1]; var ship_to = values[11]; var address = values[12]; var order_count = values[7]; var program = values[2]; var workspace = values[3]; var offer = values[4]; var sort_1 = values[5]; var sort_2 = values[6]; var image_services = values[9]; var print_services = values[10]; var priority = values[13]; var notes = values[14]; var formatteddate = utilities.formatdate(new date(), "edt", "mm/dd/yyyy"); var expirationdate = utilities.formatdate(adddates(), "edt", "mm/dd/yyyy"); // document template, copy new temp doc, , save doc's id var copyid = driveapp.getfilebyid(doctemplate) .makecopy(docname + ' ' + job_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('keyjobname', job_name); copybody.replacetext('keyshipto', ship_to); copybody.replacetext('keyaddress', address); copybody.replacetext('keyordercount', order_count); copybody.replacetext('keyprogram', program); copybody.replacetext('keyworkspace', workspace); copybody.replacetext('keyoffer', offer); copybody.replacetext('keysort1', sort_1); copybody.replacetext('keysort2', sort_2); copybody.replacetext('keyimageservices', image_services); copybody.replacetext('keyprintservices', print_services); copybody.replacetext('keypriority', priority); copybody.replacetext('keynotes', notes); copybody.replacetext('keydate', formatteddate); copybody.replacetext('keydue', expirationdate); // save , close temporary document copydoc.saveandclose(); // convert temporary document pdf using getas blob conversion var pdf = driveapp.getfilebyid(copyid).getas("application/pdf"); // attach pdf , send email var subject = "new job submission"; var body = "here work order " + job_name + ""; mailapp.sendemail(email_address, subject, body, { htmlbody: body, attachments: pdf }); // move file folder var file = driveapp.getfilebyid(copyid); driveapp.getfolderbyid("").addfile(file); file.getparents().next().removefile(file); } function printgoogledocument(copyid, docname) { // notes on ticket options see https://developers.google.com/cloud-print/docs/cdd?hl=en var ticket = { version: "1.0", print: { color: { type: "standard_color" }, duplex: { type: "no_duplex" }, } }; var payload = { "printerid": "", "content": copyid, "title": docname, "contenttype": "google.kix", // allows print google docs "ticket": json.stringify(ticket), }; var response = urlfetchapp.fetch('https://www.google.com/cloudprint/submit', { method: "post", payload: payload, headers: { authorization: 'bearer ' + googlecloudprint.getcloudprintservice().getaccesstoken() }, "mutehttpexceptions": true }); // if successful, should show job here: https://www.google.com/cloudprint/#jobs response = json.parse(response); if (response.success) { logger.log("%s", response.message); } else { logger.log("error code: %s %s", response.errorcode, response.message); } return response; } // when form gets submitted function onformsubmit(e) { var values = e.values; createnewdoc(values); printgoogledocument(copyid, docname); }
return new document 'createnewdoc(values);' function changing adding end of createnewdoc() function, right before closing bracket:
//starting @ code here // move file folder var file = driveapp.getfilebyid(copyid); driveapp.getfolderbyid("").addfile(file); file.getparents().next().removefile(file); //add var newdocname = docname + ' ' + job_name; return [file, newdocname]; //to point }
then change onformsubmit() function shown below:
// when form gets submitted function onformsubmit(e) { var values = e.values; var returneddocvalues = createnewdoc(values); var file = returneddocvalues[0]; var docname= returneddocvalues[1]; printgoogledocument(file, docname); } let me know if there errors have not tested code myself.
Comments
Post a Comment