Fakturor misslyckas sällan för att du ”glömt hur man gör”. De misslyckas för att processen finns på för många ställen: ett kalkylark, ett e-postutkast, ett PDF-verktyg och någons minne.
Det är här fakturaautomatisering i Sheets betalar sig. Byråägare märker det när faktureringen hopar sig i slutet av veckan. Ops-ansvariga avskyr statuskaoset. Och frilansare vill bara få iväg fakturor utan att göra fredag till ”admin-dag”.
Det här flödet hämtar väntande rader från Google Sheets, skapar ett professionellt mejlutkast med AI, genererar en snygg PDF-faktura, skickar den via Gmail och uppdaterar sedan ditt kalkylark så att uppföljningen stämmer.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Kalkylark till Gmail: fakturor skickas och följs upp
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:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Information Extractor", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "CraftMyPDF", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail", pos: "b", h: 48 }
n9@{ icon: "mdi:database", form: "rounded", label: "Google Sheets1", pos: "b", h: 48 }
n10@{ icon: "mdi:brain", form: "rounded", label: "GPT - 4.1 mini", pos: "b", h: 48 }
n8 --> n9
n2 --> n3
n5 --> n6
n7 --> n8
n3 --> n4
n1 --> n2
n10 -.-> n5
n10 -.-> n6
n9 --> n4
n4 --> n5
n6 --> n7
n0 --> n1
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 n5,n6 ai
class n10 aiModel
class n2 decision
class n1,n9 database
Problemet: fakturor skickas, men uppföljningen faller isär
Om du skapar fakturor från ett kalkylark vet du redan att den irriterande delen inte är matematiken. Det är allt runt omkring. Du kopierar kunduppgifter, skriver om faktura-ID:n, bifogar den ”slutliga” PDF:en (tills det finns en ny slutlig) och sedan måste du ändå tillbaka till arket och markera den som skickad. Missar du det sista steget en gång, och plötsligt jagar du en kund som redan har betalat, eller så väntar du på pengar eftersom en faktura fastnade i ”Pending”. Det dränerar, och det urholkar kassaflödet.
Det går snabbt att det blir mycket. Här är det som oftast brister.
- Du lägger cirka 10 minuter per faktura bara på att kopiera uppgifter mellan verktyg och dubbelkolla dem.
- Fakturor skickas, men arket uppdateras aldrig, så din statuskolumn blir ren fiktion.
- Mejltonen varierar beroende på vem som skickar, vilket blir märkligt när du vill uppfattas konsekvent och professionell.
- Du tappar tid på uppföljningar eftersom du inte snabbt kan se vad som faktiskt är klart.
Lösningen: Google Sheets → PDF-faktura → Gmail, automatiskt
Det här n8n-flödet fungerar som en enkel fakturaagent som körs när du vill. När du triggar det läser det ditt Google Sheet ”Client Invoices” och hämtar bara raderna markerade Status = Pending. För varje väntande faktura formaterar det de viktiga fälten (faktura-ID, kundnamn och adress, projekt, belopp, dagens fakturadatum och ett förfallodatum satt till 7 dagar senare). Sedan skriver AI ett vänligt, affärsmässigt mejl signerat som Upward Engine Team, och flödet extraherar en korrekt formaterad ämnesrad och brödtext från AI-utdata. Till sist genererar CraftMyPDF en välpolerad faktura-PDF med samma strukturerade data, Gmail skickar mejlet med PDF:en bifogad och Google Sheets uppdateras till Completed så att din uppföljning förblir korrekt.
Det börjar med en manuell ”körning” i n8n. Efter det blir Google Sheets din källa till sanning, AI tar hand om mejltexten, CraftMyPDF skapar dokumentet och Gmail levererar det. När utskicket lyckas sker statusuppdateringen direkt, så du behöver inte lita på minnet i efterhand.
Det du får: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du skickar 15 fakturor varje fredag. Manuellt kan du lägga ungefär 10 minuter per faktura på att skriva mejl, skapa PDF:er, bifoga filer och uppdatera statusar, vilket blir cirka 2,5 timmar. Med det här flödet triggar du det en gång, och sedan behandlar det de 15 väntande raderna automatiskt medan du jobbar med något annat. Även om generering och utskick tar runt 20–30 minuter i bakgrunden sjunker din tid vid tangentbordet till några minuter, och ditt ark är redan uppdaterat till Completed.
Det här behöver du
- 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 fakturarader och statusar
- Gmail för att skicka fakturor med bilagor
- CraftMyPDF API-nyckel (hämta den i din CraftMyPDF-dashboard)
Svårighetsnivå: Medel. Du kopplar konton, mappar några fält och klistrar in API-nycklar, men du behöver inte skriva kod.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Manuell körning från n8n. Du klickar på kör när du är redo att processa fakturor, vilket gör att du styr tidpunkten (praktiskt om du fakturerar i batch en gång i veckan).
Google Sheets blir inkorgen. Flödet läser ditt ark ”Client Invoices” och filtrerar ner till bara rader där Status är Pending, så att du inte råkar skicka om redan klara fakturor.
AI skriver mejlet och sedan struktureras det. AI Agent skriver ett artigt meddelande med GPT-4.1-mini, och en informationsextraktor separerar ämnesrad och brödtext så att Gmail får ett korrekt strukturerat mejl.
PDF genereras och skickas. CraftMyPDF bygger faktura-PDF:en från dina mappade fält, Gmail skickar den med bilagan och Google Sheets uppdaterar raden till Completed så att du kan lita på din uppföljning igen.
Du kan enkelt justera logiken för förfallodatum till 14 eller 30 dagar efter behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera den manuella triggern
Det här arbetsflödet startar manuellt så att ni kan validera fakturakörningen vid behov innan ni automatiserar.
- Lägg till och behåll Manual Start Trigger som första nod på er canvas.
- Låt alla inställningar vara standard för att möjliggöra manuell körning från editorn.
Steg 2: Anslut Google Sheets
Hämta fakturadata från ert kalkylark och uppdatera senare status efter att ni har skickat.
- Öppna Retrieve Sheet Records och ställ in Document till
Client Invoicesoch Sheet tillSheet1. - Öppna Update Sheet Status och bekräfta att Operation är
appendOrUpdate. - I Update Sheet Status, behåll Matching Columns satt till
\tInvoice IDoch mappa kolumnerna som visas, inklusive Status tillCompleted. - Inloggningsuppgifter krävs: Anslut era Google Sheets-inloggningsuppgifter för både Retrieve Sheet Records och Update Sheet Status.
\tInvoice ID och Project Name\t. Säkerställ att era rubriker i arket matchar exakt, annars misslyckas mappningarna.Steg 3: Konfigurera filtrering, mappning och batchning
Filtrera fram väntande fakturor, mappa nyckelfält och iterera igenom varje post en i taget.
- I Filter Pending Records, ställ in villkoret till att Status är lika med
Pendingmed{{ $json.Status }}. - I Map Invoice Fields, definiera tilldelningar med uttryck som
{{ $json['\tInvoice ID'] }},{{ $json['Client Name'] }}och{{ $json['Project Name\t'] }}. - Ställ in Invoice Date till
{{ $now.format('yyyy-MM-dd') }}och Due Date till{{ $now.plus({day: 7}).format('yyyy-MM-dd') }}. - Behåll standardinställningarna i Batch Iterator för att bearbeta en faktura per loop och skicka vidare till steget för e-postgenerering.
Steg 4: Ställ in AI-generering av e-post
Generera ett professionellt fakturamejl och tolka det till fält för ämne och brödtext.
- Öppna Invoice Email Composer och behåll prompttexten som den är, eftersom den refererar till fält som
{{ $json['Client Name'] }}och{{ $json['Amount (USD)'] }}. - I Email Content Parser, ställ in Text till
{{ $json.output }}och behåll attributen föremail subjectochemail body. - Säkerställ att OpenAI Mini Model är ansluten som språkmodell för både Invoice Email Composer och Email Content Parser.
- Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter i OpenAI Mini Model.
Steg 5: Konfigurera PDF-skapande och e-postleverans
Skapa PDF-fakturan och skicka den via Gmail, och uppdatera sedan status i arket.
- Öppna PDF Invoice Builder och ställ in Template ID till
YOUR_TEMPLATE_IDoch Data till den angivna JSON:en med uttryck som{{ $('Map Invoice Fields').item.json['Client Name'] }}. - I Dispatch Gmail Message, ställ in Send To till
{{ $('Retrieve Sheet Records').item.json['Client Email'] }}, Subject till{{ $('Email Content Parser').item.json.output['email subject'] }}och Message till{{ $('Email Content Parser').item.json.output['email body'] }}. - Bifoga PDF:en genom att behålla Attachments satt till
output.pdfi Dispatch Gmail Message. - Bekräfta det linjära flödet: PDF Invoice Builder → Dispatch Gmail Message → Update Sheet Status, och sedan tillbaka till Batch Iterator.
- Inloggningsuppgifter krävs: Anslut era CraftMyPDF-inloggningsuppgifter i PDF Invoice Builder.
- Inloggningsuppgifter krävs: Anslut era Gmail-inloggningsuppgifter i Dispatch Gmail Message.
[YOUR_EMAIL] i PDF Invoice Builder-data med er faktiska avsändaradress så att PDF:en matchar er profilering.Steg 6: Testa och aktivera ert arbetsflöde
Validera dataflöde och utdata innan ni slår på arbetsflödet.
- Klicka på Execute Workflow och trigga Manual Start Trigger manuellt.
- Bekräfta att endast rader med status
Pendingpasserar genom Filter Pending Records. - Verifiera att Dispatch Gmail Message skickar ett mejl med en PDF-bilaga och att Update Sheet Status skriver
Completedoch de uppdaterade datumen. - När testet är lyckat, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Behörigheter i Google Sheets kan blockera redigering även om läsning fungerar. Om statusar inte uppdateras: kontrollera först åtkomsten för det anslutna Google-kontot och delningsinställningarna för arket.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in ditt varumärkes tonläge tidigt, annars kommer du redigera utdata i all evighet.
Vanliga frågor
Cirka 30 minuter om dina konton och din mall är redo.
Nej. Du kopplar verktyg och mappar fält i n8n. Den svåraste delen är oftast att få dina kolumner i Google Sheet konsekventa.
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 (oftast några cent per batch) och eventuell CraftMyPDF-användning enligt din plan.
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 är enkelt. Du kan ändra förfallodatumet i steget ”Map Invoice Fields” där flödet sätter ”Due Date (7 days later)”. Du kan också justera prompten i AI Agent så att mejlet signeras med ditt företagsnamn istället för ”Upward Engine Team”, och redigera CraftMyPDF-mallen så att den matchar din grafiska profil (logotyp, fotnot, betalningsinstruktioner).
Oftast handlar det om en utgången OAuth-anslutning i n8n eller saknade Gmail-behörigheter för Google-kontot du anslutit. Anslut Gmail på nytt i n8n och bekräfta sedan att du kan skicka mejl manuellt från den inkorgen. Om det bara fallerar vid större batcher kan du slå i sändgränser, så sprid ut utskicken eller kör mindre batcher.
Tillräckligt för de flesta små team: den loopar genom väntande rader en och en, så att hantera 50 fakturor i en körning är normalt. På n8n Cloud är din praktiska gräns dina månatliga körningar och hur lång tid varje körning tar; vid egen drift beror det främst på din server och Gmail/CraftMyPDF:s rate limits. Om du förväntar dig hundratals på en gång, kör batcher oftare och håll filtret ”Pending” tajt.
Ofta, ja, eftersom det här flödet har loopning, AI-utkast och PDF-generering på ett ställe, och n8n hanterar den typen av förgreningar utan att ta betalt för varje enskilt steg. Zapier eller Make kan fortfarande fungera om du skickar ett litet antal enkla fakturor och inte bryr dig om avancerad formatering. Men när du vill ha konsekventa mejl, strukturerad parsning av ämne/brödtext och tillförlitliga ”Completed”-uppdateringar tillbaka till Sheets brukar n8n kännas renare. Om du är osäker, prata med en automationsexpert så får du en rak rekommendation baserad på volym och komplexitet.
När detta väl rullar blir ”skicka fakturor” en snabb koll av dina Pending-rader och sedan en trigger. Flödet tar hand om det repetitiva, och din fakturering förblir organiserad utan konstant handpåläggning.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.