Dina utgifter är redan ”spårade”. De sitter bara fast i e-posttrådar, PDF-bilagor och betalningsnotiser som du lovar dig själv att du ska logga senare. Sedan kommer månadsskiftet, och du letar efter saknade transaktioner som om det vore ett deltidsjobb.
Den här automatiseringen för Gmail Sheets expenses slår extra hårt mot marknadschefer och byråägare eftersom utgifterna är utspridda över verktyg och kort. Bokförare känner också av det, eftersom ”skicka bara vidare det kvittot snabbt” oftast betyder ”glöm det tills i sista minuten”. Resultatet är enkelt: varje utgiftse-post blir en felfri rad i Google Sheets, konsekvent.
Nedan ser du hur arbetsflödet förvandlar märkta Gmail-meddelanden (med PDF eller HTML) till strukturerade, bokföringsklara poster, plus vad du behöver för att köra det och vanliga fallgropar att undvika.
Så här fungerar automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Gmail till Google Sheets: utgifter loggas strukturerat
flowchart LR
subgraph sg0["Get invoice Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Get invoice", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Get payment", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Extract invoice", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Extract payment", pos: "b", h: 48 }
n4["<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/html.dark.svg' width='40' height='40' /></div><br/>HTML"]
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n8@{ icon: "mdi:database", form: "rounded", label: "Send", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set data 0", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set data 1", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set data 2", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Invoice data", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Payment data", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "Groq Chat Model", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n17@{ icon: "mdi:database", form: "rounded", label: "Send1", pos: "b", h: 48 }
n18@{ icon: "mdi:robot", form: "rounded", label: "Extract details1", pos: "b", h: 48 }
n19["<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/>Merge"]
n20@{ icon: "mdi:robot", form: "rounded", label: "Extract details", pos: "b", h: 48 }
n4 --> n5
n19 --> n20
n14 --> n4
n14 --> n10
n14 --> n11
n5 --> n9
n9 --> n19
n10 --> n19
n11 --> n18
n0 --> n2
n1 --> n3
n12 --> n14
n13 --> n14
n20 --> n8
n2 --> n12
n3 --> n13
n15 -.-> n18
n18 --> n17
n16 -.-> n18
n7 -.-> n20
n6 -.-> n20
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,n1 trigger
class n6,n16,n18,n20 ai
class n7,n15 aiModel
class n14 decision
class n8,n17 database
classDef customIcon fill:none,stroke:none
class n4,n19 customIcon
Utmaningen: utgiftse-post blir inte till felfria poster
Utgiftsspårning fallerar oftast i den tråkiga mitten. Du får en faktura som PDF, en betalningsbekräftelse eller en kortnotis. Du tänker att du ska ”logga det senare”, men senare blir en hög med mejl där halva detaljerna saknas. Det värsta är den mentala belastningen: varje gång du öppnar inkorgen fattar du små bokföringsbeslut. Och när du väl stämmer av smyger felen in. Ett leverantörsnamn är inkonsekvent, en totalsumma tolkas fel eller samma betalning loggas två gånger eftersom den kom från två olika avsändare.
Det eskalerar snabbt. Här är var det brukar fallera i verkligheten.
- PDF-fakturor ligger i Gmail i veckor, så din ”bokföring” ligger alltid efter verkligheten.
- Manuell kopiera/klistra in gör enkla totalsummor till skrivfel, särskilt när du stressar inför en deadline.
- Betalningsmejl och fakturamejl matchar inte snyggt, vilket skapar avstämningsproblem senare.
- Du tappar källspåret, så en snabb kontroll blir en skattjakt i gamla trådar.
Lösningen: Gmail → AI-extraktion → rader i Google Sheets
Det här arbetsflödet bevakar transaktionsnotiser i Gmail (inklusive bilagor) och förvandlar dem till strukturerade rader i Google Sheets. Det börjar med två Gmail-triggers, en för fakturatyp-mejl och en för betalningstyp-mejl, som du matar med hjälp av Gmail-etiketter och filter. När ett mejl innehåller en PDF läser flödet filen och extraherar texten. När det är ett HTML-kvitto eller en notis plockar det ut de relevanta delarna ur mejltexten. Därefter omvandlar en AI-kedja det röriga underlaget till en konsekvent bokföringspost enligt ett definierat schema, så du får samma fält varje gång. Till sist lägger den till resultatet i Google Sheets, inklusive en flik för ”rådata” så att du kan granska vad modellen såg.
Arbetsflödet dirigerar meddelanden baserat på avsändare, delar upp utgifter med flera rader vid behov och slår ihop poster så att en transaktion inte blir till ett dussin halva rader. I slutändan får du prydliga rader som du kan sortera, filtrera och stämma av utan att bäva.
Vad som förändras: före vs. efter
| Detta elimineras | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du får 30 utgiftsmejl i veckan och att varje mejl tar cirka 5 minuter att öppna, kopiera fält och klistra in i Google Sheets. Det är ungefär 2,5 timmar per vecka, och det sker oftast i utspridda, irriterande ryck. Med det här arbetsflödet etiketterar du mejlet (eller låter Gmail-filter göra det), och sedan extraherar n8n och lägger till raden automatiskt medan du jobbar vidare. I praktiken gör du fortfarande en snabb granskning, men det är närmare 10 minuter, inte en hel eftermiddag.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Gmail för att trigga från etiketterade utgiftsmejl.
- Google Sheets för att lagra prydliga rader och rådata.
- Google Drive om bilagor lagras eller refereras där.
- Åtkomst till Gemini- eller Groq-modell (hämta nycklar i din leverantörs dashboard).
Nivå: Nybörjare. Du kopplar konton, sätter Gmail-etiketter och klistrar in ett sheet-ID.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet i arbetsflödet
E-posttriggers från Gmail-etiketter. Två Gmail-triggers bevakar fakturarelaterade och betalningsrelaterade meddelanden som du styr till rätt etikett med Gmail-filter.
PDF och HTML konverteras till läsbar text. Om ett meddelande har en PDF läser flödet filen och extraherar texten. Om kvittot är inbäddat i mejlet extraherar det relevanta HTML-segment i stället för att förlita sig på vilken formatering avsändaren råkade välja.
AI gör rörig text till en strukturerad utgiftspost. LLM-kedjan kör det extraherade innehållet genom en schemaparsare, vilket innebär att utdata blir förutsägbara fält (inte en klump med löptext). Om ett mejl innehåller flera utgiftsposter delar den upp dem och mappar dem till felfria, separata poster innan den slår ihop det som hör ihop.
Google Sheets blir systemet som gäller. Arbetsflödet lägger till rader i ditt kalkylark, inklusive en råflik för snabba granskningar och en rensad flik för rapportering och avstämning.
Du kan enkelt justera Gmail-etiketterna och målbladets kolumner så att de matchar din kontoplan och din rapporteringsstil. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-implementeringsguide
Steg 1: konfigurera Gmail-triggern
Konfigurera de två Gmail-triggers som bevakar faktura- och betalningsmejl och laddar ner bilagor för bearbetning.
- Lägg till och konfigurera Fetch Invoice Email med Simple satt till
falseoch Label IDs satt tillLabel_7885838942566773656. - I Fetch Invoice Email, aktivera Download Attachments och ställ in Poll Times till
everyMinute. - Autentiseringsuppgifter krävs: Anslut era
gmailOAuth2-autentiseringsuppgifter till Fetch Invoice Email. - Lägg till och konfigurera Fetch Payment Email med Simple satt till
falseoch Label IDs satt tillLabel_371722915607774622. - I Fetch Payment Email, aktivera Download Attachments och ställ in Poll Times till
everyMinute. - Autentiseringsuppgifter krävs: Anslut era
gmailOAuth2-autentiseringsuppgifter till Fetch Payment Email.
Steg 2: anslut Google Sheets
Förbered de två Google Sheets-utdata där tolkade utgifts- och betalningsdata ska läggas till.
- Öppna Append Sheet Row och ställ in Operation till
append. - Ställ in Document ID till
[YOUR_ID]och Sheet Name tillraw data 2. - Mappa kolumner med uttryck som
{{ $json.output.date }},{{ $json.output.amount }},{{ $json.output.details }},{{ $json.output.card }},{{ $json.output.service }},{{ $json.output.category }}och{{ $json.output.currency }}. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-autentiseringsuppgifter till Append Sheet Row. - Öppna Append Sheet Row 2 och ställ in Operation till
append. - Ställ in Document ID till
[YOUR_ID]och Sheet Name tillraw data 2. - Mappa kolumner med uttryck som
{{ $json.output.date }},{{ $json.output.amount }},{{ $json.output.details }},{{ $json.output.service }},{{ $json.output.category }}och{{ $json.output.currency }}. - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-autentiseringsuppgifter till Append Sheet Row 2.
Steg 3: konfigurera e-posttolkning och routning
Tolka PDF:er, bygg e-postpayloads och routa dem till rätt bearbetningsflöde.
- I Parse Invoice PDF, ställ in Operation till
pdfoch Binary Property Name tillattachment_0. - I Parse Invoice PDF, ställ in Options → Password till
YOUR_CREDENTIAL_HEREom era PDF:er är lösenordsskyddade. - I Parse Payment PDF, ställ in Operation till
pdfoch Binary Property Name tillattachment_0, och ställ in Options → Password tillYOUR_CREDENTIAL_HEREvid behov. - I Assemble Invoice Data, mappa fält med uttryck som
{{ $('Fetch Invoice Email').item.json.html }},{{ $('Fetch Invoice Email').item.json.subject }},{{ $('Fetch Invoice Email').item.json.date }},{{ $('Fetch Invoice Email').item.json.text }} \n {{ $json.text }}och{{ $('Fetch Invoice Email').item.json.from.text }}. - I Assemble Payment Data, mappa fält med uttryck som
{{ $('Fetch Payment Email').item.json.html }},{{ $('Fetch Payment Email').item.json.subject }},{{ $('Fetch Payment Email').item.json.date }},{{ $('Fetch Payment Email').item.json.text }} \n {{ $json.text }}och{{ $('Fetch Payment Email').item.json.from.text }}. - Konfigurera regler i Route by Sender för att matcha avsändaren: ställ in contains- och regex-reglerna med
[YOUR_EMAIL]och fakturaregeln med notRegex med\b(?:[YOUR_EMAIL])\b.
[YOUR_EMAIL] kan alla mejl routas fel. Uppdatera alla tre regler i Route by Sender.Steg 4: sätt upp bearbetning och datamappning
Extrahera HTML-sektioner för utgifter, dela upp flera poster och normalisera fält inför AI-tolkningsstegen.
- I Extract HTML Segments, ställ in Operation till
extractHtmlContentoch Data Property Name till=html. - I Extract HTML Segments, ställ in extraktionsvärdets nyckel till
spend, CSS Selector till.spend-tableoch aktivera Return Array. - I Split Spend Items, ställ in Field to Split Out till
spend. - I Map Multi-Pay Data, mappa email_date till
{{ $('Route by Sender').item.json.date }}, email_subject till{{ $('Route by Sender').item.json.subject }}och email_content till{{ $ifEmpty($json.spend, $ifEmpty( $json.text, $json.html)) }}. - I Map Single-Pay Data, mappa email_date till
{{ $json.date }}, email_subject till{{ $json.subject }}och email_content till{{ $ifEmpty( $json.text, $json.html) }}. - I Map Invoice Data, mappa email_date till
{{ $json.date }}, email_subject till{{ $json.subject }}och email_content till{{ $ifEmpty( $json.text, $json.html) }}. - Lämna Merge Records med standardinställningar för att slå ihop single- och multi-pay-vägarna innan AI-extraktion.
Steg 5: sätt upp AI-extraktion och strukturerad tolkning
Konfigurera LLM-noderna och de strukturerade parsers som extraherar utgifts- och betalningsdetaljer.
- I Extract Spend Details, ställ in Text till
=Email Date: {{ $json.email_date }} Email Subject: {{ $json.email_subject }} Email Content: {{ $json.email_content }} Email Source: {{ $json.email_type }}. - Säkerställ att Extract Spend Details har Has Output Parser aktiverat.
- Autentiseringsuppgifter krävs: Anslut era
googlePalmApi-autentiseringsuppgifter till Gemini Chat Engine, som är språkmodellen som används av Extract Spend Details. - Använd Expense Schema Parser som strukturerad output-parser för Extract Spend Details (autentiseringsuppgifter läggs till på parent-noden, inte på parsern).
- I Extract Payment Details, ställ in Text till
=Email Date: {{ $json.email_date }} Email Subject: {{ $json.email_subject }} Email Content: {{ $json.email_content }}och låt Has Output Parser vara aktiverat. - Autentiseringsuppgifter krävs: Anslut era
groqApi-autentiseringsuppgifter till Groq Chat Engine, som är språkmodellen som används av Extract Payment Details. - Använd Transaction Schema Parser som strukturerad output-parser för Extract Payment Details (autentiseringsuppgifter läggs till på parent-noden, inte på parsern).
Steg 6: konfigurera utdatadestinationer
Slutför var de AI-extraherade data skrivs och bekräfta exekveringsflödet till Google Sheets.
- Verifiera att exekveringsvägen Extract Spend Details → Append Sheet Row är ansluten och aktiv.
- Verifiera att exekveringsvägen Extract Payment Details → Append Sheet Row 2 är ansluten och aktiv.
- Bekräfta att kolumnen Source i Append Sheet Row och Append Sheet Row 2 är satt till
n8nför spårbarhet.
Steg 7: testa och aktivera ert workflow
Kör ett manuellt test för att bekräfta att tolkning, AI-extraktion och append till Google Sheets fungerar hela vägen innan ni aktiverar workflowet.
- Klicka på Execute Workflow och skicka ett testmejl med faktura som matchar etiketterna i Fetch Invoice Email.
- Bekräfta att Parse Invoice PDF producerar text och att Route by Sender skickar data till rätt gren.
- Verifiera att Extract Spend Details och Extract Payment Details returnerar strukturerad utdata som matchar era scheman.
- Kontrollera att nya rader dyker upp i Google Sheets via Append Sheet Row och Append Sheet Row 2 med ifyllda fält.
- När allt är validerat, växla workflowet till Active för kontinuerlig bearbetning.
Se upp med
- Gmail-behörigheter kan vara kinkiga om du använder en delad inkorg. Om mejlen slutar trigga, kontrollera först det anslutna Google-kontot och etikettens synlighet i Gmail-inställningarna.
- Om du tolkar PDF:er: vissa ”skannade” fakturor är i praktiken bilder. Då ger PDF-extraktionen väldigt lite text och AI:n gissar. Du kan behöva dirigera de avsändarna annorlunda eller lägga till OCR före AI-steget.
- Skrivningar till Google Sheets kan misslyckas utan tydliga fel när kolumner ändras. Om någon byter namn på rubriker eller lägger in en kolumn, gå tillbaka till mappningarna i ”Append Sheet Row” och välj fälten på nytt.
Vanliga frågor
Cirka 30 minuter om dina Gmail-etiketter och ditt Google-ark är klara.
Ja. Du kopplar främst konton och väljer etiketter samt vilken flik i kalkylarket som raderna ska hamna i.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Molnplaner börjar på 20 USD/månad för högre volymer. Du behöver också räkna in kostnader för LLM-användning från Gemini eller Groq.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Du kan justera dirigeringen genom att redigera växeln ”Route by Sender” så att olika leverantörer går olika extraktionsvägar. Om dina kvitton mest är PDF:er, luta dig mot ”Parse Invoice PDF” och ”Parse Payment PDF”; om de mest ligger i mejltexten, anpassa ”Extract HTML Segments”. Vanliga justeringar är att ändra Google Sheets-kolumnerna i ”Append Sheet Row”, ändra hur kvitton med flera rader delas upp i ”Split Spend Items” och strama åt schemat i den strukturerade output-parsningen så att kategorierna matchar dina bokföringsregler.
Oftast är det en utgången Google-autentisering eller en behörighetsmiss på inkorgen du kopplade. Återanslut Gmail-referensen i n8n och bekräfta sedan att etiketterna fortfarande finns och att triggern pekar på rätt etikett. Om du nyligen ändrat säkerhetsinställningar i Google Workspace kan det också blockera åtkomst tills en administratör godkänner den.
På en typisk n8n Cloud-plan kan den hantera hundratals etiketterade mejl per dag, och vid egen hosting skalar det med din server. Den praktiska begränsningen är oftast din mejlvolym och modellens rate limits, inte Google Sheets.
Ofta, ja, särskilt när du behöver förgreningar, PDF-tolkning och strukturerad AI-utdata i ett och samma flöde. Zapier och Make kan lösa delar av detta, men så fort du lägger till flera triggers, avsändarbaserad dirigering och schema enforcement blir det klumpigt och dyrt. n8n är också flexibelt när det gäller att ha en ”rådata”-väg sida vid sida med rensade rader, vilket är viktigt i ekonomiflöden. Om du bara vill ha ”mejl kommer in → lägg till rad” fungerar andra verktyg fint. Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på din volym och dina leverantörer.
När detta väl rullar slutar utgiftse-post att vara en belastning och blir i stället strukturerad data. Du får renare bokföring, lugnare månadsslut och färre ”vänta, betalade vi den här?”-ögonblick.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.