How to Generate PDF Documents in Bulk from Google Sheets
You can generate PDF documents in bulk from Google Sheets by using the sheet as your data table and a Word file as the document template. Each row supplies the values for one personalized document. The Word template controls the layout, branding, headings, tables, and fixed wording. The finished files can be downloaded as PDFs.
This is useful for certificates, client letters, statements, simple contracts, notices, and reports that share one layout but contain different names, dates, references, or amounts.
TRYDOKU does not need to edit the Google Sheet itself for this workflow. You can copy a range from Sheets and paste it into the composer, or export the sheet as Excel or CSV and import that file. This guide covers both methods.
Understand the one-row, one-document model
Use one data row for each output document.
For example, a certificate sheet could contain:
| recipient_name | course_name | completion_date | certificate_id |
|---|---|---|---|
| Freja Lindholm | Safety Basics | 28 October 2026 | CERT-2048 |
| Lukas Weber | Safety Basics | 28 October 2026 | CERT-2049 |
This should produce two documents. The first row fills a certificate for Freja Lindholm, and the second fills a certificate for Lukas Weber.
Do not use several rows for one document unless you reshape the data first. If an invoice has five line items stored as five sheet rows, a flat import will not automatically group them into one invoice. Use one row per invoice for fixed fields and provide line items through a repeating list in the composer or a nested array through the API.
If your goal is editable Word output rather than final PDF files, read How to Generate Word Documents from Google Sheets. This article focuses on bulk PDF output and the checks needed before distribution.
Step 1: Decide what changes in each PDF
Open a finished sample and mark every value that can vary. Typical fields include:
- recipient or company name;
- postal address;
- issue date;
- reference number;
- product or service name;
- quantity and amount;
- due date;
- account manager;
- an optional note;
- a unique document ID.
Keep standard wording in the template. Put only changing values and control fields in Google Sheets.
Create a short field plan:
| Sheet column | Template placeholder | Example | Rule |
|---|---|---|---|
recipient_name |
{{recipient_name}} |
Greta Hoffmann | Required |
issue_date |
{{issue_date}} |
1 November 2026 | Display-ready date |
document_id |
{{document_id}} |
DOC-3081 | Unique |
amount_display |
{{amount}} |
€1,250.00 | Includes currency |
include_note |
IF block | true | Consistent boolean |
This plan gives the template owner and sheet owner the same reference.
Step 2: Build the Word template
Use a DOCX file for the layout. Design it in Word with the fonts, colors, logo, margins, headers, footers, and page breaks you want in the final PDF.
Replace each changing value with a placeholder:
Document reference: {{document_id}}
Issue date: {{issue_date}}
Prepared for
{{recipient_name}}
{{company_name}}
Service: {{service_name}}
Amount: {{amount}}
Use letters, numbers, and underscores inside placeholder names. Match them to your sheet headers when possible. TRYDOKU lets you adjust mapping, but matching names make the batch easier to inspect.
Type each placeholder in one pass. Word may split heavily edited text into internal runs, which can stop a tag from being detected. Use the free Word template variable parser to inspect the DOCX before you import data. It can also export a matching Excel header file.
Step 3: Prepare the Google Sheet
Use the first row for column headers and every following row for one document. Keep the data area plain.
Avoid:
- merged cells;
- title rows above the headers;
- blank header cells;
- subtotals inside the range;
- decorative columns;
- hidden test rows;
- several tables on one sheet;
- formulas that currently show errors.
Create a separate Generation tab if the main sheet is a working model. Pull only approved display values into that tab. This prevents notes, helper columns, and unrelated data from entering the document workflow.
Add a unique ID to every row. It helps match a PDF to its source and find duplicates. Do not rely only on a person’s name because two people can share a name and a client name can change.
Step 4: Make values display-ready
Google Sheets stores values separately from their visual formatting. A date may be copied as a date value, a number, or formatted text depending on the method. A percentage may appear as 0.15 when you intended 15%.
Create explicit display columns for important values:
issue_date_display
amount_display
percentage_display
Use them to produce exactly the text that should appear in the PDF. Then map the display column, not the raw calculation column.
Check:
- date order and month names;
- decimal places;
- thousands separators;
- currency code or symbol;
- negative-value format;
- leading zeros in reference numbers;
- phone-number formatting;
- line breaks in addresses.
If an ID such as 000184 must keep its leading zeros, store or prepare it as text.
Step 5: Choose copy-paste or file export
There are two practical ways to move Google Sheets data into TRYDOKU.
Copy and paste a range
This works well for a small, visible table:
- select the header row and the approved data rows in Google Sheets;
- copy the range;
- paste it into the TRYDOKU data grid;
- check the detected headers and values;
- map the columns to template placeholders.
Copy-paste is quick, but selection mistakes are possible. Check the row count and first and last IDs after pasting.
Export as Excel or CSV
This is easier to archive and review for a larger or controlled batch:
- make the clean generation tab active;
- download or export it in the chosen format;
- save the file with the reporting date or batch ID;
- import it into TRYDOKU;
- confirm the parsed row count and mapping.
CSV is simple, but it can lose spreadsheet-specific formatting. Excel can preserve more structure, though the generation process still uses cell data rather than workbook presentation. In both cases, prepare display-ready columns.
Step 6: Add optional content with control columns
You may need a note only for certain recipients. Add a clear control column such as include_payment_note and use a conditional block in Word:
{% if include_payment_note %}
Please include the document reference with your payment.
{% endif %}
If one of two approved messages must appear, use an else block. Keep control values consistent across the sheet and test both paths.
Use conditions for explicit business rules, not to cover bad data. A missing address should be fixed or rejected, not silently hidden. The conditional content guide gives a full test method.
Step 7: Upload and map in TRYDOKU
In the composer:
- upload the DOCX template;
- paste the Google Sheets range or import the exported file;
- map headers to placeholders;
- inspect the values in the grid;
- correct or exclude invalid rows;
- generate a small test batch.
Column names do not have to match placeholders exactly because the import flow supports mapping. Matching names still reduce manual choices and make later runs easier.
Do not begin with the full production sheet. First use synthetic rows with Nordic or German example names, different text lengths, and every optional-content path.
Step 8: Test the difficult rows
A good test batch includes:
- the shortest and longest names;
- a long company name;
- accented characters;
- the largest amount;
- zero and negative values where valid;
- a missing optional address line;
- every condition true;
- every condition false;
- long notes that may cross a page;
- a value with punctuation such as
&,/, or quotation marks.
Open the generated DOCX and PDF. The PDF is the final target, but the DOCX can help you identify whether an issue comes from template merging or PDF conversion.
Check:
- every placeholder was replaced;
- values belong to the correct row;
- dates and amounts display correctly;
- no text is cut off;
- tables stay within the page;
- headers and footers are present;
- page breaks are sensible;
- optional sections appear correctly;
- the PDF opens and prints as expected.
Step 9: Reconcile the batch
After generation, compare the source with the output set.
Use three controls:
- Count: Intended rows equal generated documents.
- Identity: Each unique source ID has one matching output.
- Sample: A reviewer compares selected PDFs with the exact source rows.
Sample the first row, last row, an ordinary row, and every unusual case. For financial or legal documents, consider reviewing every output or using a risk-based review approved by the document owner.
Do not distribute files from an unreviewed test run. Keep test and production folders separate.
Step 10: Download and store the PDFs safely
TRYDOKU generates DOCX documents and provides PDF downloads for generated files. The TRYDOKU documentation shows the current download options.
Move final PDFs to the approved destination, such as a client portal, document management system, or restricted records folder. Do not use the generation service as the permanent archive unless the product and contract explicitly provide that function.
TRYDOKU states that generated PDF and DOCX outputs are automatically purged from its servers within 24 to 72 hours. Review the current Security and Trust page for hosting and retention details. Your downloaded copies remain your responsibility.
Name files without exposing too much data
A useful filename may include a non-sensitive document ID and date:
DOC-3081-2026-11.pdf
Avoid putting addresses, payment amounts, health details, or other sensitive values in filenames. Filenames can appear in logs and email systems even when file contents are protected.
If the output naming convention is fixed by the platform, test it before designing the filing process. Keep a mapping from source ID to output file where necessary.
Handle repeating rows separately
Some PDFs contain a variable list, such as invoice items or project actions. A loop in the Word template can repeat a table row for each item.
The flat Google Sheets import still expects one top-level row per document. If your sheet has one line item per row, group the items before generation or add them as a nested list through the composer or API. Do not expect the importer to infer which rows belong to one document.
Read How to Create Dynamic Repeating Rows in a Word Template for the supported tag pattern.
Avoid automatic sending in the first version
Bulk PDF generation and bulk email are separate risks. First prove that every PDF is correct and reconciled. Then design delivery with recipient matching, duplicate prevention, bounce handling, authorization, and an audit record.
A wrong PDF sent to the wrong recipient is a data incident. A manual review step may be appropriate even after generation is automated.
If you later connect the REST API to a workflow tool, keep a stable document ID, store generation status, and make retries safe. The API documentation is the current source for endpoints and authentication.
Common problems and fixes
The pasted range has the wrong row count
Return to Google Sheets and select a clean range including one header row. Remove blank trailing rows and verify the first and last unique IDs after pasting.
Percentages or dates look wrong
Map explicit display columns instead of raw calculation cells. Check a few values before generation.
A placeholder remains in the PDF
Check the mapping, source cell, and tag spelling. Run the DOCX through the variable parser and retype tags that may have split formatting.
One PDF has text outside the page
Test long values and adjust the Word layout. Use suitable table widths, paragraph wrapping, and page breaks. Do not shorten live data without the content owner’s approval.
Several sheet rows should be one document
Reshape the data. One top-level row should represent one document; repeated items need a loop data structure.
The batch contains a hidden test recipient
Create a clean export tab or batch file rather than relying on hidden rows and filters. Reconcile intended IDs before distribution.
A reusable operating checklist
For every batch:
- use the approved DOCX template version;
- create a clean generation tab;
- include only required columns;
- convert dates, amounts, and percentages to display-ready values;
- assign a unique ID to every row;
- export only approved rows;
- verify the imported row count;
- test difficult values and all conditions;
- compare source rows with generated PDFs;
- store final files in the approved system;
- remove superseded or test outputs;
- record corrections as a new batch or version.
The checklist makes each batch easier to repeat and review.
Start with five synthetic rows
Create a small Google Sheet with five invented recipients. Include a long name, an optional blank, true and false conditions, and different date or amount formats. Build the Word template, paste or export the range, and inspect every PDF.
When that test passes, create a TRYDOKU account or continue in your existing account with a small approved batch. Expand the volume only after the source-to-output review is reliable.
Frequently asked questions
Does TRYDOKU connect directly to my Google account?
This workflow does not require direct account access. Copy a range from Google Sheets into the composer or export the sheet as Excel or CSV and import it.
Will one Google Sheets row create one PDF?
One accepted row creates one document. You can then download generated files as PDFs.
Can the PDF keep my Word formatting?
The DOCX template defines the layout. Test your fonts, tables, images, headers, footers, and page breaks in both generated DOCX and PDF output.
Can I generate PDFs with a different number of table rows?
Yes, using repeating rows, but the item data must be supplied as a list. A flat sheet with one item per row is not automatically grouped into documents.
Should I keep formulas in the imported data?
Use a clean export with stable, display-ready values. This makes the generated text easier to review and avoids dependence on live workbook calculations.