Auto Fill Google Doc Template from Google Sheets Data Using Google Apps Script
Vložit
- čas přidán 28. 09. 2020
- In this short video, I show how to auto fill a Google Doc template from Google Sheet data using Google Apps Script. If you just want the code, or want to read along, check out the article on my site: jeffreyeverhart.com/2020/09/2...
- Věda a technologie
Thank you so much for this tutorial! It is so much easier to understand and adapt to different situations when you take the time to explain what every line does instead of just importing a pile of code from some website.
Thank you for the incredible tutorial. It was very easy to follow and helped someone like myself, who had never coded with Apps Scripts, to get a sense of how the language works and be able to personalize my script for my intended application. I've already build off of your script to automate the filling of multiple documents at the clinic I work at, which will dramatically decrease the burden on our doctors and nurses, and allow them overall more time to focus on patient care. Thank you for helping us make that difference!
This tutorial really helped my company save time and mistakes on filling out paperwork. The autofill feature we created with this, and his "Adding Custom Menus" video took some tinkering, but we got it to work, and everyone's delighted at this low cost, low maintenance solution. Thank you Jeff!
Thanks for the kind words and thanks for watching!
How come this guy only has 2.2k followers? Doing such a great job sharing this type of content so carefully so anybody just stepping in this would be able to understand?
thank you So much man!! God bless you!
This script was FANTASTIC! I used it to create a hundred individual data forms from a Google Sheet with nearly 100 individual data points. Thank you!!
I just started a role at a new company and docs and sheets are a major part of the workflow. This gives me a great quick way to automate things without standing up a full Python or Node.js application to do it.
This is just what I need! Hopefully I can execute this on my own template, I don’t really understand any programming language but I’ve surviving by copying codes out of tutorials and browsing the net. Thank you so much for sharing your knowledge!
Awesome! Thanks for watching
You are incredible. I was trying for so many days. I have no coding knowledge but just a determination to solve a problem we had. Thank you!!
Thank you for a great tutorial. This is going to save me and my husband so much time with filling out legal documents for our real estate business. I am a complete novice when it comes to coding, but this was very easy to follow and understand. The only thing I had a problem with was an error saying that the document was inaccessible. But, I realized that I had been using a .docx (Microsoft Word) document and that google docs didn’t recognize it within the code, even though it could open the file and edit it. Just thought I’d mention that in case anyone else had the same problem.
is it just me or the 'real estate business' part is tmi
Thank you for the hint about docx, we have tried days to solve this.
Thanks Jeff.
This will come really handy for us.
1. Data collected through google form.
2. Data dumps into spreadsheet
3. Use this script to create a letter for sending out to clients
The UI in Google Sheets is slightly updated from when this was recorded, but even with my rudimentary coding knowledge I was able to modify this to work. THANK YOU, this is amazing.
@Jeff Everhart out of curiosity, is there a way to use template literals to have the scrip generate a new folder, and store the document in that folder?
Update: Yes, there is! I fed the script to ChatGPT and asked if it could modify to generate a new folder. I can share if anyone wants
Oh wow, that's pretty cool
@@moving2fast2 Please do share!
That is actually a very good tutorial!
I first watched a crappy one called "Autofill Google Doc Template from Google Sheets | Google Apps Script" from the channel Outright System... The guy just stole your code, without even giving you credit, and pasted it without any explanation! Some people have no shame and are awful educators, really.
But thank YOU for the great explanation and time you took to actually teach us!
This is exactly what I was missing in my function..... grabbing the link to the created Doc and posting it back to the spreadsheet. Thanks again.
Awesome, glad part of that was helpful to you! Thanks for watching
Thank you so much for taking the time with these tutorials. Very straight to the point and an easy steps. It's really helping me a lot with my business automations! THANK YOU!
Thanks for watching!!!
This was so helpful!! Thank you - I created a merge doc weeks ago and went back to your website to find out about formatting (currency)... and found the answer in you FAQ! Massive help - thank you!
Amazing tutorial! You made this so simple to follow and understand. This will save me an unbelievable amount of time creating ICAs. Thank you so much.
Amazing video !
Allowed me to create 10 docs for a client that usually takes me 20 minutes each to create.
Thanks so much Jeff 😍
Thanks so, so much for this. I'm just dipping my toes into coding and wouldn't have been able to do this sort of thing without your helpful, clear instructions and provision of the template! I made some mistakes in my version of it, but because I was able to rewatch your tutorial, I learned not only what I did wrong, but how to identify where in the code the mistake was made.
Awesome, glad this was a helpful resource. Best of luck -JE
Your tutorials are excellent, you do a great job of explaining as you go along. I originally used your prior video, "Auto Fill Google Doc from Google Form Using Google Apps Script," but found on occasion it would fail to generate the doc, without explanation (i.e. someone submits a form, it goes to the spreadsheet, but the doc just doesn't happen.) The method you demo here allowed me to set up a manual workaround for those occurrences.
You, Are, The, Best! Couple adjustments and it works FLAWLESSLY for my use case!
Thank you so much for the video! I have never coded anything before, and I was able to follow your steps and create a huge time-saver for our school's secretary. I appreciated how you explained everything so clearly - it really helped me understand what I was doing and also helped me find mistakes when the errors popped up. :)
Thanks for the kind words! Glad it helped you out and got you started.
Excellent class, we added an extra menu item and function for that item on the menu. Thank you so much, it was such a pleasure to learning with you.
You just saved myself and a handful of my colleagues hours of work. THANK YOU for this tutorial!!!
Glad I could help!
Thank you so much for sharing this, and for the accurate explanation. It was super usefull to me 3 years after you originally posted it.
Thanks! :)
This video is the best! you explained it so well. I needed to add a few more pieces to my code. Having gone into this with no idea how to use AppScript did not matter! This video pointed out to me in the right way to ask my questions online and I was able to get everything to work! Thank you Jeff!
Awesome, that is great to hear. Cheers -Jeff
You just saved a whole lot of time to lots of people including me, brilliant tutorial!
Thank you so much. Concise, clear and competent instructions! A great contrast to a lot of other help out here. It's helped me sort out a formatting issue for an online form. What I would really love is to email the resulting doc (form submission output file) as a PDF to myself/my colleague. I have not been able to resolve the variable for the output filename... thanks for any help you are able to give.
You can find an example of that here: jeffreyeverhart.com/2015/01/30/tech-tip-google-forms-confirmation-email-with-attachments/
thank you! you really put in the effort to explain everything so that beginners like me can understand the reasoning behind each line and therefore customize the script later on.
Thanks for the kind words
Jeff, thanks so much for the tutorial. Each step is explained extremely well. I just used it to automate creating invoices for my freelance work.
Great use of the script, best of luck - JE
They've shuffled some of the buttons around, but this still works like a charm.
Well done, and good show!
This is AMAZING. not only do i understand the what, but I also understand the why. You are a great instructor.
Thank you SO MUCH!!! It's so hard to find good tutorials on Google App Script.
Best code I found to perform this function! Elegant, to the point and handles spreadsheets with hundreds of rows (the known google bug issue notwithstanding). Thank you so much :D
Thanks for the kind words and thanks for watching _ JE
this is awesome and very easy to follow. what a gap in googles suite of products that you've solved without any external apps to add in. thanks again!!
Wonderful tutorial. Thank you. So helpful. Worked first time without an issue (miraculously!)
This absolutely awesome. Thanks for your great tutorial and this is what needed for me.
Thank you for this tutorial! It was very easy to follow and it did exactly what I wanted it to do.
Thank you for your instructions. They are very well done. Do you have any options for how to output just the date from a cell in the month/day/year format?
Great tutorial and really easy to follow. Helps solve a problem I've been having 🙂
Is there coding that could be used to also automatically share (view only) the resulting doc with someone in domain if their email address was also a field in the sheet?
This was incredibly easy to follow! Thank you so much!
I have several cells that have formulas that rely on other cells. If the target cells are blank, it returns a "" or blank. This script creates documents for all of these rows. Using your tutorial, I was able to add a line of script that if the first name was blank it moves on!
Hello, Can you let me know if you've found a solution to your problem?
I did!
function criarpdf () {
const ui = SpreadsheetApp.getUi();
const menu = ui.createMenu('Cria um PDF');
menu.addItem('Cria um PDF, e Envia para um E-mail', 'CriarEEnviarPDFPorEmail');
menu.addToUi();
}
function CriarEEnviarPDFPorEmail () {
const googleDocTemplate = DriveApp.getFileById('1Z1rHTPsl0N65oSx7ILrnzDvEhGCmnoMHInAGB0s6Ffk');
const destinationFolder = DriveApp.getFolderById('1GXbtYSVR5i4LYQWnezY84Hih4liWX4nO');
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
const rows = sheet.getDataRange().getValues();
rows.forEach(function(row, index){
if (index === 0) return;
if (row[3] || row[4]) return; // verifica se já há um URL na coluna 4 ou 5
const copy = googleDocTemplate.makeCopy(`${row[1]}, ${row[0]} Employee Details`, destinationFolder);
const doc = DocumentApp.openById(copy.getId());
const body = doc.getBody();
const friendlyDate = new Date(row[3]).toLocaleDateString();
// Faz as substituições usando o objeto keyIndexMap
Object.keys(keyIndexMap).forEach(function(key) {
body.replaceText(`{{${key}}}`, row[keyIndexMap[key]]);
});
doc.saveAndClose();
const email = row[2];
const url = doc.getUrl();
sheet.getRange(index + 1, 4).setValue(url);
var pdf = DriveApp.getFileById(doc.getId()).getAs(MimeType.PDF);
GmailApp.sendEmail(email, "New Employee Details Document", "Please find attached your Employee Details Document",
{attachments: [pdf]});
});
}
You explanations are super clear, thank you so much for this tutorial!
You're very welcome!
Thank you!! This is the first time i've ever done one of these! massive help so thank you
Thank you sooooooooooooooooooooooo much! This is exactly what I needed to save me hours of sending personalized letters every day!
Awesome! Thanks for the kind words. Cheers, JE
Thanks a lot myannn.... It works really great... Words cant describe how happy I am. You have made my work a lot easier... Thank you so much...
Well done man! Very nice cadence, explanations, even the error was helpful to see.
Fantastic. This script helps me save hours creating score cards for our events!
Awesome! So glad I could help out, especially someone from the CF community. Best of luck with your events!
Hi, thanks for the tutorial! Very helpful and easy to follow.
I have a question: instead of text or dates, I have numbers to transfer from GSheets to GDocs. With your (wonderful) script I get numbers without format. For example I have a number in GSheets formatted as 170,000 and in GDocs it comes out as 170000. Same happens for percentanges (from 25.1% to 0.251) Is there a way to respect the original formatting? Thank you!
Thank you for this resource! This may be a silly question - This is my first attempt at exploring apps script or coding. Can I do this for just one row of data at a time? My spreadsheet is form responses and some of them require a template checklist of next steps for the team, but not all. It's constantly collecting responses. I do have a column that records whether or not a template needs to be generated.
Absolutely fantastic video, thank you so much! I just have one question. I have hyperlinks in one column of my spreadsheet, how can I put those in the document? I tried doing it just like your tutorial, but it replaces only the text, not its formatting (i.e. hyperlinks). Is there a workaround?
Thank you very much for your hard work, even when I don't know programming, I love this is easy to understand. I did it for some documents a friend needed and it worked!! We will just adjust some stuff, but the initial run was a total SUCCESS!! XD
This is amazing!! Thank a million. just one question, how can i have the document URL to be a 'hyperlink' instead of the long url?
Hey, thanks for the amazing Content! I got a question, i am trying to change the destination folder to 5 diffrent folders depending on the Text that is in cell 1 - so if cell 1 says "John" then i want the File to be created in the FOlder "Documents John" if the Cell says "Lisa" hen i want the File to be created in the Folder "Documents Lisa". i got 5 Names in Total - so 5 Folders in Total. I guess i need to do it with an "if" statement, but i dont get it to work..
Thank you for the tutorial, really helpful. DO you know if there is a way to create multiple of the same table but in the same doc instead of doing it in new docs? Thanks!
Thanks mate!! I was trying this since last so many days
Hi Jeff, amazing video and great teaching skills. I was wondering if instead of creating google docs we are able to create PDFs named with a field and saved them to a google shared drive?
Great video! simpel and to the point. One question, what if I have a chunk of text and tables in my template, and I want to make it appear or dissappear in the output doc based on a clickbox in the sheets docs. How would I do that? I have a template with descriptions for different services, but I need that segment of text/tables only if the service is procured. So I want to have a list of services in sheets, click on the ones the customer procures.
Awesome tip! Thanks so much for making this video. This is going to save me a ton of time.
Thanks so much for this easy to follow vid. i did have a question as i was hopeing to add on to this. is there a way to have it create and new sub folder in the folder named one of the cells then save the doc it is creating into that? meaning every time it created a new url and doc it is also creating a folder for that doc to go into?
again thanks for the video
Super helpful! and a major time saver. Thank you for creating it.
I love your tutorials
Jeff, This tutorial video was great! I know nothing about coding, but I followed your video and it worked! I have one big question - in my sheet at the bottom of each column, I have a SUM function. This SUM function row will be moving further down the sheet as I add more content to the sheet. How can I prevent it from reading this row?? Thank you!
wow thank you so much. no joke it is now so much easier and u explained it really good.
Thank you so much!! Your code shaved an hour off my workload! Thank you! Thank you!
Awesome, glad the video helped
this changed my life! thanks for the great tutorial!
Glad it helped!
Thank you very much, Jeff. Your video helps a lot. Is there a way to copy 'named range' from sheets to docs?
Hi Jeff
Thanks for the tutorial
Is there a way I can prevent regenerating all documents every time I run the generate new form Script and only generate the new document with the recent data entered
or even better if I can specify the certain document I intended to have or If possible only edit the previously generated documents and generate the newly added data rows
Thankyou, first timer and it's just perfect
That REALLY helped the school I work for. Thanks man.
Glad to hear it! Thanks for watching
Hi Jeff. Thank you for your video - I successfully used it to auto fill a doc saving so much time. I have a question for you: is it possible to add another function for the same spreadsheet? I wrote another that is similar in the hopes of making a separate doc. I checked new project, entered the coding and it saved under “my projects”. I did get an error message and I’m wondering if it’s because I’m working off the same spreadsheet? I can’t seem to figure out whether I can use it w/the same spreadsheet and if so, how?
Wow, I had no clue this was possible. Thank you SO MUCH
Hi Jeff, great Video and it has helped me a lot. I would like to hold my data items in columns (index's) rather than rows. Is this possible?
Jeff, this has helped me out with my business so much. thank you.
Awesome, thanks for watching
You Legend, thank you dude!
You're welcome!
Hey Jeff,
Thanks so much for this !
Out of interest how would i take a cell that has a URL in it and replace a tag in the doc with the image rather than the URL ?
your tutorial is very helpful to me, thanks for it. but if run twice or more it will be double/ add more files in my folder not to replace existing files. how to remove or replace the existing files without doing manually remove on my drive.
Hi Jeff,
Thanks for this video. Super helpful. I have a question. I would also like to pull data from a second sheet on the spreadsheet. I've been working on it over the weekend and still can't seem to figure it out. Would you be able to assist?
Thank you for the great tutorial. I was wondering if it is possible to have the filled Docs merge into a single Doc, rather a separate doc for each employee. Thanks
Thank you for a great tutorial. I have little knowledge of coding and I was able to follow.
Glad it helped!
Thank you, this help me finish one of my very critical task
Hello there, thanks for the amazing tutorial, I just had a question is there something similar for google slides? as in to autogenerate google slides!
Thanks Jeff! It's very helpful!
Hi, great video. One question is there a way to input data from google sheet in a bunch of EXISTING google docs?
Basically, I have around 100 google docs (10 pages each). Just one of those pages needs to be changed o a monthly basis.
You magnificant beast! You helped me so much, with this video. It all worked!!!
Hey Jeff! thanks for the nice introduction, I am having a spread sheet with numbered cases with are separated into three categories and I would like to auto fill this sheet into three docs based on the categories. Do you know by chance any source or do you have an advice?
Would appreciate the help. :D
Hi, on the other hand, I was just checking one more aspect of it, is there a way to copy content of one document into another one with all the formatting.
like one document will act as a template and then on the click of the custom menu like yours, we will replace all the contents from the other document.
Both the document will have statis/constant URL, document ID. so that I can use the same link in the automation ?
is there a way .. request you to please help here...
Great video. I have a question though. Your Google app script primarily works for one column and multiple rows in google doc. Can you help us with Google app script where it generates multiple columns and rows table on Google doc using the data that is available on a single row of Google sheet?
Hi there, thanks for this great tutorial! Would it be possible to create 1 doc with the template copied onto multiple pages instead of creating a separate doc for each row?
Thank you very much ! Very useful tutorial !
Game changer for what I need to do! Thank you!
Brother, i have no words to explain my joy. You just saved me a lot of time 😘😘😘
Wherever you are i wish you all the love and joy in your life 😭😭
Hi! Great tutorial! I have one question is it possible to use this to fill like 3 different templates depending on conditions from sheet?
Thank you very much for this! it was very helpful! just one question. Is it possible to add an image to the template from the google sheet? and how would that be??
Gostei muito, salvou minha vida, parabéns pelo trabalho !!!
Hello! Thanks! Your video helped a lot. I have 1 question! Why decimal coma's becomes decimal dot's after running script? In my sheets i use decimal coma's.
Thanks for the video, Jeff. I need to make a similar one but with a twist. I need to show details of multiple names on the same page, Do I create this form three or four times to get 3 or 4 row details from the spreadsheet?
Thanks Jeff, it will help me a lot.
But if I wanted to send this document file to my webmail in a word format? It can be done?
unbelievably well explained...to the point, no wafsofte wafsofte chat...you´re the dude ..thanks!
Thanks, Very Helpfull. How ta make the function run Automatic when adding new data in sheet?
Hi Jeff, I have started my own project (as a way of learning Google apps script), love the power!! I have used your example above except modified it to modify an invoice spreadsheet template instead of a google doc. I am having trouble with an error I just recently started getting - "Exception: The starting row of the range is too small." Would you mind looking through my beginner code to help me out... sure it will be a quick fix for you?!
Hi @jeff first of all thank you for this tutorial...i have a question. I have made this but i have formula for every blank row. When i run the autofill its creating a doc even without any inputs. Is there a way wherein the scirpt will ignore the formula? Thank you so mch!