Auto Fill Google Doc from Google Form Using Google Apps Script
HTML-код
- Опубликовано: 9 фев 2025
- In this short video, I show how to auto fill a Google Doc from a Google Form submission using Google Apps Script. If you just want the code, or want to read along, check out the article on my site: jeffreyeverhar...
how can you declare (e) ??? it is not working when i try this script
I love how you went over each code line by line
Thanks for the kind words
Hey Jeff - I am doing a Fill In the Rhyme Workshop for a DEI Class I am launching. This was perfect for saving my students a step by taking their form and completing the document I will give them to rehearse from. You just helped me write my first little script - I am learning solidity as a hobby, so this was neat to incorporate into my education project. Worked like a charm. I got one error -misplaced comma that I quickly noticed and worked perfectly after that. Great job man - great pace, great detail, super job brother!
This was exactly what I was looking for to populate a document with client info, thank you!
Awesome! Glad it worked for you. Thanks for watching!
@@jeffeverhart dude you are well spoken, at the right pacing and nailed this guide for a not-casual-actually-stupid-person :) way to go!
Yes thank you
@@jeffeverhart please make more complicated stuff for appscript
Thanks, any thoughts on what topics you'd like to see covered?
To be honest: this was way too complicated for me and I'm still stuck with the problem I am trying to solve 😂 But I am liking and comment for the algo, because I really like your energy in the tutorial. Thanks!
Jeff, 2 years after you posted, I was able to follow along and increase my paperwork productivity. Amazing. Now I have to research how to use a drop-down menu to print more extensive verbiage.
Awesome, glad this helped you out
Hi, why this not work for me. It was an error: TypeError: Cannot read properties of undefined (reading 'values'). I copied the code but not working. Can you help me?
Thank you so much! I can't believe Google hasn't made a proper function between form and doc yet. I came here to learn this because I was trying to make one-link access to a form on my Role Playing Discord, for people to submit their Original Characters for roleplay, and then THAT response into a reference doc that I could share with all the players on discord about each player. Woo!
Awesome! I'm glad this worked well for you. Thanks for watching!
Thank you for this!
I am a middle school teacher and in the course of less then an hour, I was able to make a form, and edit a template for lesson plans. It should save me dozens of hours in the future!
Awesome, Jason! Always glad when I can help a teacher save some time in the classroom.
@@jeffeverhart I see so many other possibilities..
I could make Google Form and have it fill out an Essay even. The possibilities are endless!
Jeff, I'm just getting back into coding and could not stand the online courses. I did your simple example, and it is indirectly related to one of my projects, and I am hooked. The code is simple but it gives me a start. Good job and thanks.
15 minutes video = 3 lessons anticipated in the class room with rookies. I have 80 this year, so I should branch out for the German speaking students on the part vocational track towards a trainee position. I should be able to use the "title" to demonstrate the possibility of formatting the text for the more casual tone in Switzerland of maskuline and feminine in the text, to deviate from the unisex polite standard German "Sie" .
A completed traineeship is for several topics qualifying for the University acceptance, including ETH Zürich.
I got an error saying that the e and the other values from e is undefined
Thank you, Thank you, Thank you. This is perfect for quickly creating, organizing, and sharing lesson plans.
Glad it was helpful! Thanks for watching
nice video, question
TypeError: Cannot read properties of undefined (reading 'values')
how to fix that?
even I got the same when I tried today , got any fix for it ?
@@drbavithrandeda6569 check for any and all spaces and or extra characters like commas to make sure it is all inputted correctly
u saved so much time for me and my internship. thank you!
The best, easiest, simplest explanation i'v ever seen!
Thank you so much1
hi,
thank you very much for this tutorial. I'm absolutely new to coding but this is exactly the usecase i need for work. However, when i copy your code and insert my file and folder ID's i always get this error notfication:
function autoFillForm(e) {
var name = e.values[0];
var nachname = e.values[1];
var standort = e.values[2];
TypeError: Cannot read property 'values' of undefined
autoFillForm @ Code.gs:2
I haven't quiet understood the meaning of (e) in the function name
Can you help?
Same issue here
@@XxXVidmanXxX Exactly the same error here.
hi Jeff, magnificent!!
after trying, i managed to make it work.. anyway if I make another column in the sheets for example D2, containing "=left(a2,3)".... and i declare "var nick = e.values[4];".... and "body.replacetext('{{nick}}', nick);"..... the {{nick}} in the docs stay untouched, while the {{firstname}}, etc can be changed.. do you know what's wrong?
Finally. I have been looking for this solution. Thanks for the explanation Jeff.
you are welcome. Thanks for watching!
Hey! Non developer here trying to better automate client status reports. With each new form submission will I be able to have the info added to the same document every time or will it create a new document?
Thank You for this walk through. Clear, organized and Concise! Really helped me see what is possible with Apps scripting. 👌
Glad it was helpful!
I have checkboxes and multiple-choice responses mixed with text responses in a Google form. Following your video, I'm getting responses on the newly created document on questions 1-5 and then I stop getting the responses on question 6 which is a select all that apply checkbox response. Question 7 is a text response and then question 8 is again a select all that apply checkbox response. What do I need to enter for the checkbox responses to be added to my document and if there are multiple checkboxes selected how can they be separated by a comma? I found a comment on your website about using the textToPrint command but I think my situation is different? And how would I code for the multiple-choice responses? Thanks in advance.
Tried used it but get error cannot read properties of undefined (reading 'values'...
I've used this tutorial before to auto fill a google doc from a form, but I'm wanting to put my doc template in a google sheet. The main purpose is for that sheet to look similar to a doc if I were to print but to also have the ability use the "sum" function available in a sheet to add up info that will be added after the sheet is auto created from the script.
Hi Thomas! Thnak you for creating this video. I have followed it and created my script but for some reason it is not population into the google doc I want it to. Any suggestions?
Hi!! Just saw your video, and I’m looking to create a contract for my business , so the workflow I envision is Client fills out form > it then populates the contract with some of the info they already filled out in the form, but my question is what do I do about the info that I need to add manually? I guess just add it manually?😅
Very helpful, but every so often (maybe 10% of the time) the form submission will fail to trigger the document creation, and nothing gets logged. Is there a way to re-run the trigger for the most recent form submission? Currently, if I try to manually re-run the trigger, I get an error, "TypeError: Cannot read properties of undefined (reading 'values')". I assume this is because it's going to the next line on the spreadsheet, which is blank.
EDIT: I ended up using your follow-up video, "Auto Fill Google Doc Template from Google Sheets Data Using Google Apps Script". That method works as a workaround for when the form submission trigger fails.
Is it possible to add function that saves the file also as a pdf?
Is there a way to get lots of responses to populate into a Google doc instead of a spreadsheet? I need a lot of information from people to automatically go to certain places on a specific form, but not a spreadsheet.
How do you get it to update the same document over and over and add new rows of data to the same google doc? For instance, if I created a journal and I wanted my Google Forms entries to populate into my doc continuously?
I want this but instead it's from Google Sheets. Is that possible? I have data in sheets then I want to create reports in docs? I want 1 page (doc) per row (sheet).
Are you using Producer edition?? What do y'all recomnd if I want to make s but not record my voice or tutorial?
Jeff, can we auto fill image to the docs after image upload respond in google form?
I got the following message when I clicked on "run" after following your instructions. TypeError: Cannot read property 'values' of undefined (line 2, file "Code")
This is my line 2-
var timestamp = e.values[0];
Do you have any suggestions?
Also, I am playing around with the triggers etc. Is there a way to get a document to generate and appear in the folder for a form response that was already submitted? For example, I tried putting a trigger for On Edit, and On Change, and On Open. I then proceeded to close and re-open the response spreadsheet, and edit one of the phone numbers on a response that was submitted before I created this script, and nothing happened that I can see. I have 2 people who have already submitted, and when I do a test one it works, but I don't want to ask my people to resubmit the form, nor do I want to type all their info just to get it into a document, was hoping for a way to grab those old ones and make them transfer.
Upon playing with the different triggers, I believe it sent the Summary of Failures email to me at those times with more info on the Error, the email says the following:
TypeError: Cannot read property '0' of undefined
So I am not sure what I am missing, but the rest works fine when a new form is filled out and submitted, just don't know why there is a small error in there somewhere?
Thanks for a very helpful and informative video for someone who has never done anything like this before! I would love to learn more!
Can we also auto fill google doc with images that is submitted from the Google Form?
Just wanna know if this applicable if i have an existingntemplate fill it in docs?
Man, I can't believe this worked, thank you so much.
Awesome, thanks for watching!
Hi Jeff! Your tutorial is amazing! Easy to understand and to follow. I'm just wondering if you also have a video on how to add the actual photos uploaded in Google Forms to the Google Doc? I have created a daily site report form that requires images from our project site. I want to see those images in the report in the Google Docs so I can just print it out and submit to our client
This has been a great help, I am wondering if it is possible to save the doc to a specific folder and that folder would be correlated to a name from a drop down inside of the form itself?
Is there anyway to populate a table located in your header that already has some data filled in example: company logo and company name are filled in but I have 6 other rows that need filled
Thanks for the tutorial. I have one question, does the table in the google doc append whenever someone submits a form or it will go to a new google doc?
Hi Jeff, Great video! I'm not sure if this question has been answered but I have a template made in docs that I make a copy of each time I need to fill it out. Is it possible with this method to have it autofill a new copy from a pre-made template? Basically, I need a new doc created from every form submission from a template that's already been created.
I'm working towards the same thing, please let me know if you figure it out! Good luck!
@@wadekmali This seems to be the closest thing I can find. ruclips.net/video/TSDXfdo3JVU/видео.html I haven't had a chance to try it as I am still awaiting admin approval but if you do, let me know!
If you look at the video at this timestamp, the script does make a copy of the original template. This creates a new doc per submission, and keeps the original: ruclips.net/video/ziLtj5-_D7c/видео.html
Hi, it is a great video. Can I add an extra column in the spreadsheet which will replace the additional placeholder of the template? The extra column is not available in the google form.
the 'e' value is undefined. how do i make this work?
Facing the same issue what did i do wrong
Nice video. I took it as a base of a project using a sheet template instead. As several users will be sending responses at the same time, I preferred to use batch processes with triggers.
Thanks so much for this. My last line is giving me so much issues and wont let me trigger. it keeps saying Syntax error: SyntaxError: Unexpected end of input line: 51 file: Code.gs.............. I have everything typed correctly, what should i do? It aslo says I dont have any target functions. I dont know what else to do... Could my template not be in the right place?
This will save me so much time Jeff! Kudos
I'm getting errors with the "e.values" part. Any thoughts on what the problem might be?
I am! not sure whats going on :(
A few reasons outlined here: jeffreyeverhart.com/2016/08/06/fix-typeerror-cannot-read-property-values-undefined/
Thank you for the knowledge. How do I make this successful TypeError: Cannot read properties of undefined (reading 'values')?
I am curious about implementing a checkbox grid style of answer. For example, if I wanted to choose a specific location, then certain team members to assign to a project from that location, then it creates columns for each location. Is it possible to do an "if not blank" style of function to auto-populate the appropriate team members into the template doc? I have put in a e.namedVariable but then columns must be the same name and it doesn't tell the name of the location that way.
Is it possible to get the uploaded image from my form displayed as an image in docs.
thanks for the tutorial.... what is the code for upload a image?
is it work for spreadsheet to?
Is it possible to conditionally format paragraphs based on responses? An example would be the selection field will populate one paragraph if a certain selection and another with a different selection.
Short answer is absolutely you can do that. You would want to write an if/else statement that checks the value you want to look at, then run different replace function based on that check: www.w3schools.com/js/js_if_else.asp
Thanks for the video! What about in the case of uploaded images in Google Forms?
Hello and thank you for the introduction to Google Apps Script. I am trying to make an auto-fill Google Doc from Google Form. I've followed the video (and copied and pasted the script from the blog post) but I'm still running into an error: "TypeError: templateFile.makeCopy is not a function". I am using the newer version of the Scripts, is that a portion of the reason? I am highly convinced it's my error causing the issue. (And in reading others comments, ACK! I am a dolt!) Any ideas on what I may be doing wrong?
Hey Jeff, Thank you for your video, will it be possible to replace text with a image if my clients upload a .PNG file in forms, right now it comes with the URL text as expected, but what to do if i want the picture to show in the docs? i hope you will take time to answer because this function could help me a lot in other project to
check out the comments on my blog post, someone figured it out and left the code in the comments
Is there any way to generate responses into the Doc from a checkbox of items on the Form, inserting only the items checked? Does that make sense? Thank you for the great tutorial! I am working on creating this for my team.
Hey I need help i want to add the new file in same document but new page .
Can I use that script With any form, for example, WordPress form, or do I have to use a google form to run the script correctly with google sheets?
This example would have to be a Google Form
So this video work perfect and I have used it. But I am needing help because my google doc is more complex with check boxes to match the google form. How can I add that to my app script to check the boxes on the doc like the google form?
I can't find script editor!
help someone
This is so helpful! What might I do if I have a question on my form that allows for checkbox/multiple answers? How would we deal these out to specific cells?
just asking can you save it as pdf is it possible?
Do you have anything updated? I tried this and I'm getting an error: TypeError: Cannot read properties of undefined (reading 'values'). This worked for me in the past but is no longer working.
Is it possible to take this one step further, and convert the DOC to PDF. And then automate an email with the pdf attached?
How does it know which spreadsheet to pull data from? When you're in Sheets, and you click Tools -> Script Editor, does it automatically assume you want to pull data from that spreadsheet? I'm having issues because I've parsed out my data into separate sheets and want to pull data from those, but they share the same file ID as the original. Is there a way to specify that I want the function to look at another sheet within the workbook?
Great video, btw. I'm very new to all of this script language, but this was just what I needed.
In this example, the script doesn't actually pull data from the sheet so much as it is passed into our script from the form submission event. To access different sheets, you can use 'SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Name of Sheet")' to select a specific sheet in a workbook. From there, I recommend you check out my post on getting data from Google Sheets: jeffreyeverhart.com/2019/03/01/retrieve-rows-from-google-spreadsheet-with-google-apps-script/
IS THERE ANY WAY, WE GET GOOGLE FORM FIELDS AUTOFILLED FROM GOOGLE SHEET VALUES (NOT WITH PREFILLED LINKS)
Hi, thank you for this tutorial. One question I hope you can answer: instead of generating new templates for every new form responses, how can I add new forms response data to existing docs depending on the options chosen in the docs (example: person A selects it's them filling out the form in the first option, so everything thereafter gets added to their specific doc template?!). I really hope you can help! Thank you
can we have a document section too added to the last column which can automatically be filled whenever auto-generated document is created?
I am having an issue with replacing the text in the Header. The code I used was:
var body = doc.getHeader();
body.replaceText("{{Name}}", name);
body.replaceText("{{Whatever is on my Doc}}", with one of the fields from the form);
I used to use this but it no longer works. How do I replace the text in the Header with the text entered in the form? Thank you
Thank you so MUCH! Everything worked great. I ran into a problem. I completed these tasks to complete data walks on staff but I am stuck because I do not know how to auto share the doc I recreated from the responses. I am the responder because I am the one completing the form. How can I auto email each person their results.
How can I make it work for many data information, I mean having a lot of names and dates .... in google sheets and want them all be in one google doc table.
I want to auto create invoices with one client buying many articles and its complicated for i hope you can help me with that. Thank you for all your efforts ❤❤
Check this out, it does something similar to what you are asking for: jeffreyeverhart.com/2020/05/18/open-letter-maker-with-google-forms-docs-and-apps-script/
@@jeffeverhart Thank you jeff you are the best !
Are you able to do If statements in the word document like you can in MailMerge?
Does this method still work? Tried using "e" as a parameter and seems like the script doesn't know that I'm referring to the spreadsheet populated by the form.
Everything appears to work except for the replaceTest part. Thoughts?
This is fanstastic, easy to use. One question, I got it working great except it duplicates on form submission and creates two identical docs in my destination folder. any thoughts on what I goofed up?
How to get linear scale data from form to google docs.please help me out
Thanks for the good information. We look forward to the continuation.
Hey Jeff, quick question, if I wanted to place {{firstName}} in several places in my template, how would I have the script replace each {{firstName}} with the variable taken from the form?
Hey Spencer, thanks for watching. According to the docs the replaceText function should replace all instances of the pattern in your document: developers.google.com/apps-script/reference/document/body#replaceText(String,String)
@@jeffeverhart Could you show an example of the replaceText function with the {{firstName}} for several places in the template? Seems like a common question. Basically fill out the form and use it to replace {{firstName}} wherever it is at (multiple places) in the template.
How do you send it as pdf attachment to the provided email address
Great video !! Could the replacement function work with a multiple choice question submission from a form ? I've noticed that multiple values in a single cell are separated by a comma ?
Yes, you would need to split the text on the commas and then reconstruct how you want the multiple values to be displayed
Great video for me to understand, a non-engineer! I do have one question - I have a question on the Google Form that is a multiple check box option so that translates to it inputting the title to "Example [1st choice]". How do I put in the var function since it doesn't recognize the brackets and also because I can't change the titles for the columns in Sheets? Thanks in advance!
Is it possible to autofill the sum of multiple entries? I have only been able to concatenate entries like strings and despite reading the documentation I cannot seem to get it to treat the cell values as ints.
You should be able to do a type conversion using parseInt, and then it would be just doing the math operations you want: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
Let me know if I'm missing something. Thanks for watching!
Super useful, concise, and easy to follow. Thank you!
Thanks for watching! I'm glad it was helpful
Can the auto filled document be sent to the one who filled it ?
Example I fill a form, it will create the google doc, can that doc be sent automatically to my email that I have written on the form ?
You could use bits and pieces of what I have in this one: jeffreyeverhart.com/wp-admin/post.php?post=795&action=edit
is there a way to put a date rage in one document. It would be awesome if all rows could be pulled into one document. For example let's say you have 10 employees and wanted to generate a report showing all 10 on 1 document not 10 separate docs.
Hi Jeff, very helpful video - thank you! Wondering if there is a way to then send the completed Google Doc as either a Google Doc or a pdf for the person that filled out the Google Form. (one of the Google Form questions would be email address). Looking forward to your reply.
Hi,
You are super.
How can it be done without creating a form?
Print the data from the Google Sheet list to the word document.
How will the script code be written?
Hi, thanks for watching. I've had so many people ask for an automation that runs from a sheet instead of a form, so I made a video and blog post that describes exactly that: ruclips.net/video/iLALWX0_OYs/видео.html
Thanks for watching!
Hi Jeff, very well done ... and it helped me a lot. But i have another issue ... ( e.g. an Invoice with header informations and then a table with the invoice items )
In my template the items are in a table ... and this is where the problem starts. How can i fill in a loop item for item in the docs template ( items in a table ) ... All over the net i found no solution ... 😢
How can you auto link that document to a cell that corresponds with the submission in the google spreadsheet?
Thanks Jeff, have got this working for my own form - brilliant. However, is there a piece of code that can be included in the script to autoprint the newly created files?
If I would like into parse form data into SpreadSheet rather than Document app, is there any parameter on the code need to be changed (aside from the template url id)?
Yeah, a lot actually. SpreadsheetApp and DocumentApp are very different pieces of functionality with different methods. Once you have pieces of data as variables it is easy to do other things with them though. I'd recommend checking out this article on writing data to a google sheet for some patterns: mashe.hawksey.info/2018/02/google-apps-script-patterns-writing-rows-of-data-to-google-sheets/
Hello Jeff!! Thanks for this extremely helpful video. I hope I can get your help on these two questions:
1) How would I go about also creating an auto-saved PDF version of that google doc (a pdf that will download when i click the link in the column) perhaps in the column adjacent to this one: is this possible (do you have a link on your website for this as a tutorial?)
2) How do I get the script to STOP or NOT run if the actual spreadsheet row is empty? Sometimes I have a few extra empty rows in my GoogleSheet, and this script will keep running and essentially create empty documents. I assume this is something I can add as an "if" statement in the rows.forEach(function(row,index){}, and ive been trying to experiment but not able to figure it out. In otherwords, something for example, "if the first column of my spreadsheet is empty, DONT create a document, (e.g., return))". I tried adding in "if (row[1 === 0]) return;", which i understand to mean, if Column B in my spreadsheet is empty, skip this row, but that doesnt seem to work).
****EDITING MY QUESTION as i think i found my answer to my second question. I added
if (row[1] == "") return;
and that seemed to work :)
Thanks in advance for your help for question 1 , and happy new year!!
Jeff, thanks so much for this tutorial. Well presented, clear and it worked for my Form processing. Much appreciated.
Thank you Jeff! This was easy to follow.
Thanks Jeff. I tried it exactly as you have explained and get the error message: Exception: Unexpected error while getting the method or property getFolderById on object DriveApp.
I tried copying and pasting the folder id again and even making a new folder and still won’t work. Any advice?
I really loved this tutorial. Very well detailed, and the code part is also very well explained. I have a question. If I want to put all the answers in one Google like a list of names, nationalities, age, etc; how would it be?
Hi Jeff, Thank you so much for the video! We are a counseling organization doing counseling for kids in foster care, and I rigged this so that our counselors can do notes from it. One problem. I think I need to add a wait function. About 4 percent of the time I get this: "Exception: Service Documents failed while accessing document" emailed to me. Google support was no help, of course, so what would be the proper method to add a wait function? I'm not a coder of any sort, but I'm thinking this should appear after "var body = doc.getBody();" in the code. Correct?
Or perhaps a promise function? Like promise the document load before it starts getting copied and written to? I'm not sure.
Thank you... your vid helps me a lot...