Rapportering ska inte kännas som att du bygger om samma dokument varje vecka. Men om du kopierar kostnadsrader från Google Sheets, summerar dem för hand och försöker få den slutliga PDF:en att se ”kundredo” ut, vet du redan hur lätt det är att missa en rad eller klistra in fel totalsumma.
Marknadschefer får meddelandet ”kan du skicka det här idag?”. Byråägare märker det när varje kund vill ha en lite annorlunda vy. Och en konsult som jobbar solo har inte tid att leka designer. Den här automatiseringen för Sheets PDF-rapporter gör råa kostnadsrader till en konsekvent rapport som du kan dela utan att behöva tveka.
Du sätter upp ett n8n-flöde som hämtar ditt ark, summerar spend per kanal, ber AI skriva en sammanfattning på enkel svenska och renderar sedan en snygg PDF via PDF.co med din egen HTML-mall.
Så fungerar automatiseringen
Här är hela flödet som du kommer att sätta upp:
n8n Workflow Template: Google Sheets + PDF.co: kundklara kostnads-pdf:er
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Get Marketing Data", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Sum Spend by Channel", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Sum Spend", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Write Summary", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Combine All"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Convert to PDF Upload"]
n9@{ icon: "mdi:web", form: "rounded", label: "Create PDF", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Covert to 1 row", pos: "b", h: 48 }
n5 --> n7
n7 --> n8
n6 --> n7
n10 --> n7
n10 --> n6
n1 -.-> n6
n3 --> n5
n3 --> n4
n4 --> n10
n8 --> n9
n2 -.-> n6
n0 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2,n6 ai
class n1 aiModel
class n3 database
class n9 api
class n8 code
classDef customIcon fill:none,stroke:none
class n7,n8 customIcon
Varför det här spelar roll: kundrapportering blir snabbt rörig
Kostnadsrapportering låter enkelt tills du gör det under tidspress. Du börjar med ett Google Sheet som är ”hyfsat strukturerat”, och så inser du att kanalerna heter tre olika saker, totalsummor inte matchar och du formaterar en PDF fem minuter innan ett samtal. Det värsta är den mentala belastningen. Du tänker inte på insikter eller nästa steg. Du skannar rader, letar fel och hoppas att du inte glömde uppdatera en siffra i slutdokumentet. Det är slitjobb som ser viktigt ut eftersom det slutar i en snygg fil.
Friktionen bygger på. Här brukar det oftast fallera.
- Kopiering och klistra in av kostnadstotaler bjuder in små fel som är svåra att upptäcka när de väl ligger i en formaterad rapport.
- När kanaler ändras (ny kampanj, ny plattform) slutar din ”mall” att matcha datan och du är tillbaka i manuella korrigeringar.
- Uppdateringar tar längre tid än de borde, så du skjuter på att skicka rapporten och tappar momentum med kunden.
- Din rapporteringsstil glider över tid, vilket innebär att kunden ser inkonsekventa PDF:er från vecka till vecka.
Det du bygger: Google Sheets-data → varumärkesanpassad PDF-rapport
Det här flödet gör om ditt marknadsföringsark med spend till en delbar PDF i ett enda körningstillfälle. Det börjar med att hämta rader från ett Google Sheet (samma plats som teamet redan uppdaterar dagliga kostnader i). Därifrån summerar n8n totalsummor och räknar spend per kanal så att du slipper skapa och underhålla sköra formler över flera flikar. Därefter skriver en agent med OpenAI-stöd en kort, berättande sammanfattning baserad på siffrorna, så att rapporten inte läser som en ren kalkylexport. Till sist formar flödet om allt till exakt de fält som din PDF.co-HTML-mall förväntar sig och renderar en polerad PDF som du kan skicka till en kund eller lägga i Drive.
Flödet startar med en manuell körning (perfekt när någon säger ”skicka nu”), går vidare genom sammanfattning och AI-text, och avslutas med att skapa en PDF via PDF.co. Slutresultatet är ett konsekvent dokument i rätt varumärkeston, byggt på färska data från arket.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du skickar en kostnadsrapport per vecka för 5 kunder. Manuellt kanske du lägger cirka 20 minuter på att hämta och summera data från Google Sheets plus ytterligare 25 minuter på att formatera en ”snygg” PDF, alltså ungefär 45 minuter per kund (nära 4 timmar per vecka). Med det här flödet uppdaterar du arket som vanligt, kör automatiseringen och lägger sedan kanske 5 minuter på att rimlighetskontrollera PDF:en och lägga till en kort notis. Det ger cirka 3 timmar tillbaka de flesta veckor, utan att ändra din rapporteringsfrekvens.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra dina kostnadsrader
- PDF.co för att rendera din HTML-mall till en PDF
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
Svårighetsgrad: Nybörjare. Du kopplar konton, klistrar in ett mall-ID och justerar några fält.
Vill du att någon bygger det här åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Du triggar rapporten när du behöver den. Flödet använder manuell start, vilket är perfekt för kundförfrågningar som kommer mitt på dagen eller precis före ett möte.
Google Sheets-data hämtas in i n8n. Flödet läser dina kostnadsrader från valt kalkylark och vald flik, så att rapporten alltid speglar de senaste uppdateringarna som teamet gjort.
Din spend sammanfattas och görs om till en berättande text. n8n summerar totalsummor och spend per kanal, och sedan skriver en AI-agent (driven av en OpenAI-chatmodell) en kort sammanfattning som är lättare att förstå än råa tabeller.
En PDF genereras från din mall. Flödet paketerar totalsummor, rader och sammanfattningstext i rätt format och skickar det till PDF.co för att rendera en färdig PDF-rapport.
Du kan enkelt ändra arkfilter för att generera PDF:er per kund eller per kampanj utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startar vid behov och hämtar data för marknadsföringskostnader när ni kör det manuellt.
- Lägg till noden Manual Execution Start som din trigger.
- Koppla Manual Execution Start till Fetch Marketing Sheet.
- Behåll klisterlappen Flowpast Branding som referensblock (valfritt, ingen konfiguration behövs).
Steg 2: anslut Google Sheets
Hämta datasetet med marknadsföringskostnader från ert Google-ark för att mata beräkningarna.
- Lägg till noden Fetch Marketing Sheet och ställ in Document till
[YOUR_ID]. - Ställ in Sheet Name till
[YOUR_ID](cachat namn:Data). - Inloggning krävs: anslut era
googleSheetsOAuth2Api-uppgifter. - Notera det parallella flödet: Fetch Marketing Sheet skickar utdata parallellt till både Compute Total Spend och Aggregate Channel Spend.
Steg 3: konfigurera aggregeringar för kostnader
Summera totalkostnader och kanaluppdelningar innan ni genererar rapporten.
- I Compute Total Spend, ställ in Fields To Summarize till att summera
Spend ($). - I Aggregate Channel Spend, ställ in Fields To Split By till
Channeloch summeraSpend ($)med aggregeringensum. - Koppla Aggregate Channel Spend till Collapse to Single Row med Aggregate satt till
aggregateAllItemData. - Notera det parallella flödet: Collapse to Single Row skickar utdata parallellt till både Merge All Results och Generate Summary Text.
- Koppla Compute Total Spend till Merge All Results.
Steg 4: konfigurera generering av AI-sammanfattning
Generera en kortfattad narrativ sammanfattning av de aggregerade kostnadsdata med hjälp av AI-agenten.
- I Generate Summary Text, ställ in Text till
={{ $json.data }}. - Låt Prompt Type vara satt till
defineoch bekräfta att Has Output Parser är aktiverat. - Använd Structured Output Reader med JSON Schema Example satt till
{ "summary": "summary" }. - Koppla OpenAI Chat Engine som språkmodell till Generate Summary Text.
- Inloggning krävs: anslut era
openAiApi-uppgifter till OpenAI Chat Engine. - Notering om AI-verktyg: Structured Output Reader är en undernod; lägg till uppgifter på den överordnade OpenAI Chat Engine, inte på parsern.
Steg 5: konfigurera PDF-payload och rendering
Kombinera resultaten och formatera det slutliga datasetet för PDF-generering.
- I Merge All Results, ställ in Mode till
combine, Combine By tillcombineByPosition, och Number Inputs till3. - I Prepare PDF Payload, behåll den angivna JavaScript Code som den är för att formatera totaler, kanaler och sammanfattning.
- I Render PDF Report, ställ in Operation till
URL/HTML to PDF, Convert Type tillhtmlTemplateToPDF, och Template ID till[YOUR_ID]. - Ställ in Template Data till
={{ JSON.stringify($json) }}. - Inloggning krävs: anslut era
pdfcoApi-uppgifter till Render PDF Report.
totalSpendFmt, channels och summary så att de matchar utdata från Prepare PDF Payload.Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att bekräfta dataflödet, genereringen av sammanfattning och PDF-renderingen.
- Klicka på Execute Workflow för att köra Manual Execution Start och trigga hela kedjan.
- Verifiera att Compute Total Spend matar ut en summa för
Spend ($)och att Aggregate Channel Spend matar ut totaler per kanal. - Bekräfta att Generate Summary Text returnerar ett JSON-objekt som innehåller
summaryoch att Merge All Results kombinerar tre indata. - Kontrollera Render PDF Report för ett lyckat PDF-svar från PDF.co.
- När ni är nöjda, växla arbetsflödet till Active för användning i produktion.
Felsökningstips
- Google Sheets-autentisering kan löpa ut eller kräva specifika behörigheter. Om det slutar fungera, kontrollera n8n → Credentials → Google Sheets och autentisera om kontot som äger kalkylarket först.
- PDF.co-anrop kan misslyckas om mall-ID:t är fel eller om API-nyckeln saknar åtkomst. Öppna din PDF.co-dashboard, bekräfta att HTML-till-PDF-mallen finns, och kopiera sedan Template ID till noden Render PDF Report.
- Standardprompter i AI-noder är generiska. Lägg in din rapporteringston (”rakt på sak, kundvänligt, inget hype”) i steget Generate Summary Text, annars kommer du att redigera utdata för alltid.
Snabba svar
Cirka 30 minuter om ditt ark och ditt PDF.co-konto är redo.
Nej. Du kopplar mestadels konton och klistrar in ditt PDF.co mall-ID. Det finns en Code-nod i flödet, men den är redan byggd åt dig.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in OpenAI API-kostnader (ofta bara några cent per rapport) och PDF.co-användning beroende på hur många PDF:er du genererar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. De flesta börjar med att filtrera Google Sheets-hämtningen till en enskild kund, ett datumintervall eller en kampanj, och sedan justera instruktionerna för AI-sammanfattningen i Generate Summary Text. Du kan också byta PDF.co-mall för att matcha olika kunder utan att röra aggregeringslogiken, så länge steget Prepare PDF Payload mappar fält som din mall förväntar sig.
Oftast är det en OAuth-session som har löpt ut eller att det anslutna Google-kontot inte har åtkomst till kalkylarket. Återanslut Google Sheets-credential i n8n och bekräfta sedan att Spreadsheet ID och fliknamn matchar exakt. Kontrollera också att arket fortfarande har data i de förväntade raderna; tomma hämtningar kan se ut som ”det är trasigt” när det egentligen är ”inga rader returnerades”.
För de flesta små team hanterar det veckovis och daglig rapportering utan problem. På n8n Cloud är din gräns främst dina månatliga körningar, och varje rapportkörning är vanligtvis en körning. Om du kör egen drift finns ingen körningsgräns, så kapaciteten handlar om din server och API-rate limits från Google Sheets, OpenAI och PDF.co.
Ofta, ja, eftersom det här flödet kombinerar sammanfattning, AI-textgenerering och ett anpassat PDF-renderingssteg på ett ställe. n8n är bra på flerstegslogik och datatransformering, så du kan slå ihop totalsummor, kanaluppdelningar och berättande text utan krångliga kringlösningar. Zapier och Make kan göra delar av det, men du kan märka att det blir dyrare när du lägger till förgreningar, formateringssteg och högre uppgiftsvolym. Den stora vinsten är kontroll: du kan köra egen drift, hålla kostnaderna förutsägbara och anpassa payloaden till exakt din PDF-mall. Om du är osäker, prata med en automationsexpert så pekar vi dig till det enklaste alternativet för din setup.
När det här väl är igång blir rapportering ett knapptryck och en snabb granskning. Flödet tar hand om det repetitiva, och du kan fokusera på vad spend faktiskt betyder.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.