Convert a Spreadsheet to PDF Automatically: One PDF Per Row
By Josh ·
File > Download > PDF gives you one file of the whole sheet. That's free, and it's the wrong file if you needed an invoice for row 37.
People searching "convert a spreadsheet to PDF automatically" usually want one of two jobs. A printout of the sheet. Or one styled document per row: a certificate or an invoice that doesn't still look like cells, named after the person in the row, and without building a template by hand if you can skip that. This post is the second job. If you only wanted the printout, the first entry sends you home in a minute.
What is the best way to convert a spreadsheet to PDF automatically, one file per row? Not the export menu. You need a tool that treats each row as a document. If the rows are in Google Sheets and the batch is modest, start with Autocrat (opens in a new tab). It's free and it does this. Pay for a hosted tool only when Autocrat's look or Google's quotas won't hold, or when nobody wants to build and tag a template.
I sell one of the eight tools below. It's last. If a free route does the job, I say so in that section.
Two questions decide this, and they aren't the ones comparison sites ask. Does the output have to look designed, or is a clean data page fine? And what has to wake the job next month: a person, a new row, or a clock? The second question is where the free routes and the paid ones split.
If you're starting from Word, the macro that splits a merge into separate PDFs is your path. Email-only merge lives in the Google Sheets mail merge guide. Neither job is covered again here. Holding a CSV file rather than a live sheet? The CSV to PDF guide sorts the plain table export from one file per row. And if the job is the same report pack per client every week, the automated PDF reports guide covers that shape, Looker Studio included.
Which of these generate PDFs from a spreadsheet on a schedule?
Every tool here can produce one PDF per row. Only some can do it on Monday morning while you're asleep, and "automation" covers four different mechanisms on this list. I count an internal clock or a Google time trigger as native. A row-change action is useful automation, but a different promise.
- A clock schedule. Run this job every Monday at 08:00 over the rows that match a filter. Apps Script, Autocrat, and SheetRender do this natively.
- A new-row trigger. Watch the sheet, generate a document when a row appears. DocsAutomator polls every 5 minutes and takes up to 50 new rows per cycle. Portant processes rows added after you switch it on, and optionally rows that change.
- Glue. The timing lives in Zapier or Make, and that platform calls the PDF tool. CraftMyPDF works this way. So does DocsAutomator when you want a calendar run over the whole sheet instead of reacting to new rows.
- Nothing. Canva Bulk Create and the Google Sheets export both require a person.
"Create when Status becomes Approved" and "create everything every Monday morning" sound close until a late row sits untouched for a week. And if a tool claims to be the only one that generates documents on a schedule, hold it against this list. Autocrat has a time trigger and costs nothing.
1. The Google Sheets export, when that is all you need
File > Download > PDF, set the range, done. It produces one file from the sheet or the selection, so the way to get per-row output is to filter to one row, export, rename, repeat. There is no version of this that runs without you.
For a dozen one-off documents, three minutes of clicking beats forty minutes of setting up something clever. I'd use it and close the tab.
2. Apps Script, if you would rather own the thing
The DIY route: copy a Google Docs template, replace the tags, export the copy as a PDF, drop it in a folder. Sixteen lines for the loop, four more to make it run itself every Monday, and nothing to pay.
// assumes columns are Name, Course, Score, in that order
function generatePdfs() {
const rows = SpreadsheetApp.getActiveSheet().getDataRange().getValues().slice(1);
const folder = DriveApp.getFolderById("YOUR_FOLDER_ID");
const template = DriveApp.getFileById("YOUR_TEMPLATE_DOC_ID");
rows.forEach(([name, course, score]) => {
const copy = template.makeCopy(name, folder);
const doc = DocumentApp.openById(copy.getId());
const body = doc.getBody();
body.replaceText("<<Name>>", name);
body.replaceText("<<Course>>", course);
body.replaceText("<<Score>>", String(score));
doc.saveAndClose();
folder.createFile(copy.getAs("application/pdf")).setName(name + ".pdf");
copy.setTrashed(true);
});
}
// run it every Monday at 08:00, once, from the editor
function installTrigger() {
ScriptApp.newTrigger("generatePdfs").timeBased().onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(8).create();
}It has no record of which rows it already did, so a rerun duplicates everything, and a run that dies partway leaves you reading a Drive folder to work out where it stopped. Making it safe (a status column, a resume point, a bounded runtime) is the real project, and it's not another dozen lines.
Google's quotas are the other wall. Any single execution is cut off at six minutes, and triggered scripts get 90 minutes of total runtime per day on a consumer account and 6 hours on Google Workspace (Google's quota table (opens in a new tab)). A row costs you a document copy and an export before anything is delivered, so that six-minute ceiling arrives sooner than the row count suggests.
Best DIY route when code ownership is real. If the only developer is a contractor finishing tomorrow, the subscription you avoided becomes maintenance work.
3. Autocrat, still the default free answer
Use Autocrat. For most people whose rows are already in Google Sheets, this is the answer.
Autocrat (opens in a new tab) is a free add-on from New Visions Cloudlab. You tag a Google Docs or Google Slides template with <<Name>> style placeholders, map the tags to columns, set the output to one file per row, and pick PDF. It names files from your columns, saves them into a Drive folder, emails them if you want, and it will run on a time or form trigger (opens in a new tab), which is the part most roundups leave out. It can also write merge status and a file link back into the row. If your team tracks a run from inside the sheet, that alone is a reason to stay. Google Sheets only, though. An emailed .xlsx has to be imported first, every time.
There is a click-by-click walkthrough in our certificate guide and a wider comparison of every route out of a sheet in the Google Sheets mail merge post.
It runs on Apps Script inside your account, so the quotas above are its quotas. Large or frequent jobs stop partway, often with Service invoked too many times, and sometimes with no message at all. Output looks like what it is. A Google Slides certificate renders like a Google Slides slide.
Free and durable. If your batches are small and occasional, stop here.
4. Canva Bulk Create, when the page has to look designed
The best-looking route on this page, and the one your marketing team will already have open. Design one page, add a text box or a frame for each field, then connect a CSV or XLSX file (or a Canva Sheet), and let Auto-match fields wire the columns up.
Canva's own help page (opens in a new tab) carries the limits, and they're real: Bulk Create needs a paid Canva plan (Education and Nonprofits access also qualifies), it's desktop only, and a run takes up to 300 rows and 150 columns. Canva Pro was US$180 a year for one person when I last checked; Canva's pricing page (opens in a new tab) has current numbers.
No scheduling of any kind. No live connection to the sheet on the spreadsheet path (you upload a file). The 300-row cap means a 450-name list is two passes. Set the file naming before you generate or you spend the evening renaming.
Right tool for anything a person will pin to a wall, generated a few times a year. I wouldn't try to make it a weekly pipeline. Our bulk certificate guide has the step order.
5. DocsAutomator, the strongest paid answer for most people
If the free routes have run out and your documents have real structure (invoices with line items, contracts that get signed), this is where I'd start.
Templates are Google Docs or Word files you tag yourself, or a PDF you overlay data onto, and their AI Template Generator drafts a tagged file from a text description. Data comes from Google Sheets, Airtable, Notion, SmartSuite, ClickUp, or the API. Each row becomes a document, PDFs land in Google Drive or OneDrive, and email delivery is built in. E-signatures are $0.50 per signed document on every tier.
Their pricing (opens in a new tab) is $19 a month for 100 documents, $59 for 1,000, and $149 for 5,000, billed yearly. Month to month those tiers are $29, $79, and $199. Overage runs $0.20, $0.10, and $0.06 a document, and their pricing page lists 5 automations on the entry plan and 20 on the middle one. A hundred documents a month is tight for a monthly invoice run and generous for a quarterly letter.
The automation model is the thing to understand before you buy. Auto-create polls your sheet every 5 minutes, generates documents for rows added since a cursor it maintains, and handles up to 50 new rows per cycle. You can edit that cursor to reprocess or skip rows, and it shuts itself off after five consecutive failed cycles and emails the owner. That last part is the mark of people who have watched a loop keep writing bad documents overnight.
New rows are not a calendar. "Regenerate every report on the first of the month" means an Apps Script menu button, or Zapier or Make doing the timing. Don't buy this for a Monday reprint of the same 200 rows.
The $19 sticker requires yearly billing, and its 100-document cap is the one that surprises people who compared prices and stopped reading. The template is still yours to build and tag, unless you go the PDF overlay route or accept what the generator drafts from a description. The overlay is an overlay, not a reconstruction of a filled sample.
Line items, signatures, or data that lives in Airtable. Buy this one.
6. Portant, when the document belongs to a deal
Portant (opens in a new tab) merges Google Docs, Google Slides, Word, or PowerPoint templates. It collects e-signatures and attaches Stripe payment links to quotes. Its pricing page bills the whole product as document automation for HubSpot, which tells you where the center of gravity sits.
The free plan is 30 documents a month for one user and includes a single e-signature per document, though signed PDFs on free accounts carry a Portant footer watermark. Pro is $42 a month billed annually for 2,000 documents. Team is $125 for 5,000 across five users.
Its Google Sheets automation is new-row based, and only on paid plans. One sharp edge before you trust it: it only processes rows added after you turn it on, and a formula column that fills the sheet with empty strings will convince it there are no new rows at all. Portant's docs tell you to wrap those formulas in an IF that returns a blank. The automation docs list new-row and changed-row triggers. No clock option in its docs. The headline prices are the annual ones.
SheetRender doesn't do e-signatures or payments. If the signature is the point, Portant is the better fit.
If the row is a deal and the PDF needs a signature at the end, Portant over everything else here.
7. CraftMyPDF, when software does the generating
CraftMyPDF (opens in a new tab) is a template editor plus a JSON API. You build a template by dragging components, or import an existing PDF, then post data at it and get a document back. Free is 50 PDFs or images a month across 3 templates with the API included, which is more than most API tools give you before a card. Lite is $29 a month for 1,200 documents. Plus is $49 for 3,000.
Nothing here reads your spreadsheet on its own. Zapier and Make are on every plan because that's the intended path. Bubble is there too. The schedule and the sheet connection live in the automation platform, and so does a second bill. If you were hoping to skip that layer, this is not the tool.
When the thing generating documents is your own software, this is the right shape, and the free tier is enough to prove it before you commit. If you don't have software, you'll feel the grain of the product on day one. Other API tools live in this same lane (PDF Noodle is one: $35 a month for 1,000 PDFs when I last checked, with a batch endpoint capped at 20 items per request). None of them run a Monday batch from a sheet unless you wire the clock yourself.
One more name you will meet: Formstack Documents. It does all of this and connects to a few hundred business systems, but when we last checked its pricing page the publicly listed number was the Forms plus Documents plus Sign Suite at $299 a month, or $250 monthly billed annually, with standalone Documents pricing routed through sales. Their pricing page (opens in a new tab) is the place to confirm that. Worth a call if you're already a Salesforce shop. Hard to evaluate from a blog post.
8. SheetRender, if the example already exists
SheetRender is the one I sell.
You already have the finished document, and the batch has to go out on a schedule without anyone pressing a button. Everything above starts by asking you to build and tag a template. You upload the document you already have. A finished PDF is enough. A screenshot or a saved web page works too. We rebuild it as a template with fields mapped to your columns. Connect a Google Sheets spreadsheet or upload an .xlsx or .csv. Check the mapping and generate. Output is one PDF per row, downloadable separately or as a zip. Delivery to a Google Drive folder or to each row's email address is built in. There's also a Google Sheets add-on (opens in a new tab) that puts the whole flow in a sidebar next to your data.
A schedule picks a frequency and an hour, can be limited to rows added since the last run, and can email each new document as it appears. Every 15 minutes is available on Pro. A webhook URL fires a schedule you have already configured. Schedules start at $19 a month and that tier includes exactly one. Unlimited schedules, the 15-minute option, and 10,000 documents a month are on Pro at $49.
We don't do e-signatures or payment collection. Portant and DocsAutomator do, and if the PDF needs a signature at the end, buy one of those. We don't have a public generation API. If your own code posts JSON and needs a PDF back, use CraftMyPDF. Output is PDF only: no editable Google Docs file, and we don't write status back into your spreadsheet the way Autocrat does. Your data leaves Google. The rebuilt template still takes a few minutes of review on tight spacing and dense tables, and a bad scan produces a bad template. Free is 50 documents a month, 2 active templates, a "Made with SheetRender" footer, and no scheduled runs. That's enough to see your own example come back as a working template. Move to Starter before the first real run.
The comparison table
| Tool | Cost when I checked | Runs on a schedule by itself | What you build first |
|---|---|---|---|
| Google Sheets export | Free | No | Nothing; you filter and print |
| Apps Script | Free | Yes, a time-driven trigger you write | 16 lines of code, plus 4 for the trigger |
| Autocrat | Free | Yes, time and form triggers | Google Docs or Slides template with <<tags>> |
| Canva Bulk Create | Paid Canva plan; Pro US$180/yr for one person | No | One design, plus a text box or frame per field |
| DocsAutomator | $19/mo for 100 docs billed yearly ($29 month to month) | New rows only: polls every 5 min, 50 rows per cycle | Google Docs or Word template, or a PDF overlay |
| Portant | Free for 30 docs/mo; $42/mo for 2,000, billed annually | New or changed rows, paid plans only | Docs, Slides, Word, or PowerPoint template with tags |
| CraftMyPDF | Free for 50 docs/mo and 3 templates; $29/mo for 1,200 | No; Zapier, Make, or your own code sets the timing | Drag-and-drop template, or import a PDF |
| SheetRender | Free for 50 docs/mo with a footer; $19/mo for 1,500 | Yes, from $19: hourly to monthly, 15 minutes on Pro | One finished example document you already have |
Prices and limits are what each vendor's own page showed in mid-August 2026, and two of them (DocsAutomator, Portant) display annual rates by default. Check the toggle before you budget.
Quick answers
What is the cheapest way to generate 500 PDFs from a spreadsheet? Autocrat, at zero, if you can live with a Google Slides or Google Docs look and you split the run across days when Apps Script quotas bite. The cheapest paid option in this list that handles 500 in one pass is CraftMyPDF's $29 tier, and the timing still comes from Zapier or Make.
Can I generate styled certificates or invoices without building a template? Mostly no. Autocrat and a script both start from a template you lay out and tag. Portant does too. DocsAutomator drafts a tagged file from a text prompt. You still have to maintain that file. CraftMyPDF imports a PDF into its editor as components you then wire up. SheetRender is the one on this list that builds the working template from an uploaded example document and then runs it on a schedule. Autocrat does the schedule half without the example half.
Do I need Zapier or Make to run this on a schedule? Only for some of them. Apps Script, Autocrat, and SheetRender schedule themselves. DocsAutomator and Portant react to new rows without glue, but a calendar run over existing rows needs an automation platform in front of them. CraftMyPDF needs one either way.
What about Excel files, without Google in the loop? Canva takes an XLSX upload. CraftMyPDF takes CSV. SheetRender takes both. Autocrat and Portant read Google Sheets, so the file goes in there first. DocsAutomator connects to Airtable and Notion, plus a few other databases, though I didn't find a direct spreadsheet-file upload on their integrations list.
Which one should you pick?
- One document, or twelve, once: the Google Sheets export. Filter, print, rename, repeat.
- You can write code and want no vendor: Apps Script, with a time trigger and low expectations about volume.
- Rows in Google Sheets, modest batches, no budget: Autocrat. Free, and it schedules.
- A page someone will frame or hand out: Canva Bulk Create, twice a year, on desktop.
- Invoices with line items, or anything that gets signed: DocsAutomator.
- The document belongs to a HubSpot deal: Portant.
- Your code is the thing generating documents: CraftMyPDF.
- A design you already have, on a repeating schedule, with nobody assigned to press the button: SheetRender.
If the certificates need a public verification page or a LinkedIn badge, none of the eight is the right category. That job belongs to a credentialing platform (Certifier and Accredible are the usual names). The tools on this page stop at a file.
Once a quarter, Autocrat is enough. The setup time is the whole cost and you pay it once. Every Monday, the expensive part is the person who has to work out why the batch stopped at 212 of 340. That's when I'd use SheetRender.