# Turn your Google Calendar into a printable PDF Google Calendar to PDF with your own layout. Make a weekly agenda, daily schedule or event list as a PDF automatically with n8n, Make or Zapier. **Quick answer.** On a schedule, n8n, Make or Zapier pulls your upcoming events from Google Calendar. The events go into an agenda template, html-pdf.com turns it into a PDF, and the PDF lands in your inbox or a shared folder. ## What you'll build A Monday morning PDF with the week ahead. A daily room schedule to print and pin on the door. A list of every client meeting last month, ready to attach to an invoice or timesheet. Google Calendar's print option works for a quick copy. This approach gives you your own layout, can combine several calendars, and runs by itself on a schedule. ## What you need - **A Google account** with the calendars you want to include. - **n8n**, **Make** or **Zapier**. n8n and Make are easiest because they can fetch many events at once. - **A design.** The [report template](https://html-pdf.com/templates/report) is a good start for an agenda. A template is a ready made page design, so you only change the text. - **An API key** from [html-pdf.com](https://html-pdf.com/login). You get 100 free pages once, with no card. ## Step by step with n8n 1. **Schedule.** Add a **Schedule Trigger**, for example every Monday at 7:00. 2. **Get events.** Add a **Google Calendar** node with **Event → Get Many**. Pick the calendar and set the start and end to cover the next 7 days. 3. **Build the agenda.** Add a **Code** node that groups events by day and turns them into rows. 4. **Make the PDF.** Add an **HTTP Request** node. Method `POST`, URL `https://html-pdf.com/v1/pdf`, header `Authorization` with `Bearer hp_live_...`, and a JSON body like the one below. Set the response format to **File**. 5. **Deliver.** Add **Gmail** to email it, or **Google Drive** to save it. ```json { "html": "
09:00 Team standup
14:00 Call with Acme
11:00 Dentist
", "format": "A4", "filename": "agenda-2026-10-12.pdf" } ``` The [n8n guide](https://html-pdf.com/guides/n8n) shows each node setting. ## Step by step with Make 1. Set the scenario to run weekly. 2. Add **Google Calendar → Search Events** for the date range you want. 3. Add a **Text aggregator** that builds one line per event. 4. Add **HTTP → Make a request** posting to `https://html-pdf.com/v1/pdf`, with `"response": "url"` in the body. 5. Email the link or upload the file. The [Make guide](https://html-pdf.com/guides/make) has the details. ## With Zapier Use **Schedule by Zapier** as the trigger and **Google Calendar → Find Events** to search for events, then **Webhooks by Zapier → Custom Request** to make the PDF. Zapier searches may return only a limited number of events, so this suits short daily schedules best. See the [Zapier guide](https://html-pdf.com/guides/zapier). ## Code path for developers In Google Apps Script, attached to your Google account, the whole thing fits in one function. ```js function weeklyAgendaPdf() { const start = new Date(); const end = new Date(start.getTime() + 7 * 864e5); const events = CalendarApp.getDefaultCalendar().getEvents(start, end); const rows = events.map(e => `