Dina Sponsored Products-rapporter ligger i en mapp, men besluten tas fortfarande på magkänsla. Du laddar ner filer, öppnar flikar, kisar på ACOS och funderar sedan på vad du ska ändra först. Så blir “snabb veckovis optimering” plötsligt en halvdag.
Den här automationen för Amazon Ads actions träffar Amazon-operatörer hårdast, men performance marketers och små team som kör flera ASIN:er känner också av den. Vinsten är enkel: en tydlig, strukturerad åtgärdslista i Gmail så att du kan stoppa onödiga annonskostnader innan de drar iväg.
Nedan ser du exakt vad workflowet gör, vad du behöver för att köra det och vilka resultat du kan förvänta dig när det väl är på plats.
Så fungerar den här automationen
Hela n8n-workflowet, från trigger till slutresultat:
n8n Workflow Template: Google Drive till Gmail: åtgärdslista för Amazon Ads
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "List Files", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "is XLSX", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Get File", 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/merge.svg' width='40' height='40' /></div><br/>Merge XLSX and CSV"]
n5["<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/>Format Data"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set fileName", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Preserve File Name", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Email Optimizations", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Extract XLSX Data", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Extract CSV Data", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Preserve CSV File Name", pos: "b", h: 48 }
n12@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Email Options", pos: "b", h: 48 }
n14@{ icon: "mdi:robot", form: "rounded", label: "AI Analyze", pos: "b", h: 48 }
n2 --> n9
n2 --> n10
n3 --> n6
n14 --> n8
n0 --> n3
n5 --> n14
n6 --> n2
n13 --> n0
n10 --> n11
n9 --> n7
n1 -.-> n14
n4 --> n5
n7 --> n4
n11 --> n4
n12 --> n13
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 n12 trigger
class n14 ai
class n1 aiModel
class n2 decision
class n5 code
classDef customIcon fill:none,stroke:none
class n4,n5 customIcon
Problemet: Amazon Ads-optimering blir kalkylblads-triage
Amazon ger dig data, men inte nästa steg. Du tar ut en Search Term-rapport, sedan en Targeting-rapport, sedan placeringar, budgetar, kampanjer. Nu har du fem filer i två format, alla med lite olika kolumner, och du har fortfarande inte svarat på den enda frågan som spelar roll: “Vad ska jag ändra i dag?” Ju längre du väntar, desto mer betalar du för irrelevanta klick och desto mer underfinansierar du sökord som faktiskt fungerar. Och om vi ska vara ärliga: manuell analys leder lätt till misstag. Ett missat filter eller ett inklistrat värde på fel ställe kan få dig att jaga fel åtgärd i en vecka.
Det går fort att det spårar ur. Här är var det oftast faller isär.
- Du lägger cirka 2 timmar per vecka bara på att ladda ner, öppna och stämma av rapporter mellan flikar.
- Åtgärdspunkter tappas bort eftersom “insikten” bor i ett kalkylblad, inte i din dagliga inkorg.
- Blandade .xlsx- och .csv-exporter saktar ner dig, särskilt när filnamn inte är konsekventa mellan ASIN:er.
- När du hanterar flera produkter eller annonskonton skalar det manuella arbetssättet inte utan att du tar in hjälp.
Lösningen: gör Drive-rapporter till en åtgärdslista i Gmail
Det här workflowet bevakar dina Sponsored Products-rapporter i Google Drive, laddar ner dem och förbereder datan så att den faktiskt går att analysera. Det märker upp varje fil, kontrollerar om den är XLSX eller CSV och extraherar innehållet därefter. Sedan kombinerar det relevanta flikar, normaliserar rapportdatan (så att kolumner och formatering blir konsekventa) och skickar det strukturerade underlaget till ett AI-granskningssteg som drivs av GPT‑4o. Till sist får du ett strukturerat optimeringsmejl i Gmail med tydliga instruktioner du kan agera på: vilka sökord som ska pausas, var bud bör justeras, vilka placeringar som ser slösaktiga ut och vilka budgetar som förtjänar mer utrymme.
Workflowet startar när du kör det (manuell trigger) och hämtar sedan filer från din valda Google Drive-mapp. Därefter tolkar och slår det ihop rapporterna, städar upp dem och kör en AI-baserad optimeringsgranskning. Gmail levererar rekommendationerna som en praktisk checklista, inte en vägg av siffror.
Det här får du: automation vs. resultat
| Det här automatiserar workflowet | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du hanterar 3 ASIN:er och granskar fem rapporter per ASIN varje vecka (Search Term, Targeting, Campaign, Placement, Budget). Manuellt är det lätt att lägga cirka 10 minuter per fil bara på att ladda ner, öppna och hitta de “intressanta” delarna. Det är ungefär 2,5 timmar innan du ens bestämmer vad du ska ändra. Med det här workflowet kör du triggern, låter n8n processa mappen i några minuter och får en åtgärdslista i Gmail. Du lägger tiden på att genomföra ändringar, inte på att leta efter dem.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Drive för att lagra Sponsored Products-rapporter
- Gmail för att leverera optimeringsinstruktioner till din inkorg
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
Svårighetsnivå: Medel. Du kopplar konton, väljer rätt Drive-mapp och testar lite för att bekräfta att dina rapportformat matchar.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis konsultation i 15 minuter).
Så fungerar det
Du startar körningen. Workflowet börjar med en manuell trigger, vilket är perfekt när du vill granska “senaste 30 dagar”-data vid begäran innan du gör ändringar.
Din Drive-mapp skannas och filer laddas ner. n8n hämtar Amazon Ads-rapporterna från Google Drive och tar sedan in varje fil i workflowet så att den kan tolkas på ett stabilt sätt.
Workflowet standardiserar det stökiga. Det märker upp filer, kontrollerar om varje rapport är XLSX eller CSV, extraherar innehållet, slår ihop underlagen från flikar och normaliserar rapportdatan med ett dedikerat städsteg.
AI gör data till beslut. GPT‑4o granskar det normaliserade underlaget och tar fram optimeringsrekommendationer, som sedan skickas som ett strukturerat mejl via Gmail.
Du kan enkelt justera mejlformatet så att det passar ditt arbetssätt (checklista, avsnitt per ASIN eller “topp 10 åtgärder först”) utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggern för manuell körning
Det här arbetsflödet startas manuellt och initierar sedan e-postinställningar innan det hämtar rapporter från Google Drive.
- Lägg till noden Manual Run Trigger som trigger för arbetsflödet.
- Öppna Configure Email Settings och ställ in send_to på
. - Ställ in subject på
. - Låt Flowpast Branding ligga kvar som en referens-”sticky note” (valfritt, ingen konfiguration krävs).
Steg 2: anslut Google Drive
Dessa noder hittar och laddar ner rapportfilerna som används för optimeringsanalysen.
- Öppna Retrieve Drive Files och ställ in Search Method på
query. - Ställ in Folder-valet till er rapportmapp (gränssnittet visar
). - Inloggning krävs: anslut era googleDriveOAuth2Api-uppgifter i Retrieve Drive Files.
- Öppna Download Drive File och ställ in File ID på
={{ $json.id }}. - Bekräfta att Binary Property Name är inställt på
datai alternativen för Download Drive File. - Inloggning krävs: anslut era googleDriveOAuth2Api-uppgifter i Download Drive File.
Steg 3: konfigurera filparsning och normalisering
Den här delen märker upp varje fil, styr om XLSX- respektive CSV-format och normaliserar alla rapportdataset till ett enda JSON-objekt.
- I Assign File Label ställer ni in fileName på
={{ $json.name }}och aktiverar Include Other Fields. - I Check XLSX Format ställer ni in villkoret så att det kontrollerar om leftValue är
={{ $json.name }}contains.xlsx. - Check XLSX Format skickar ut till både Parse XLSX Content och Parse CSV Content parallellt.
- Ställ in Parse XLSX Content till Operation
xlsx. - Ställ in Parse CSV Content Binary Property Name på
=data. - I både Keep XLSX Label och Keep CSV Label ställer ni in fileName på
={{ $('Check XLSX Format').item.json.fileName }}och låter Include Other Fields vara aktiverat. - Anslut båda märkta utdata till Combine Sheet Inputs och skicka sedan vidare till Normalize Report Data.
- Ställ in Normalize Report Data JavaScript Code till
const result = {};\n\nfor (const item of items) {\n const fileName = item.json.fileName || item.json.name || 'unknown_file';\n const baseName = fileName\n .split('.')[0]\n .replace(/\\s+/g, '_')\n .toLowerCase()\n .replace(/\\s*\\(\\d+\\)$/, '')\n .replace(/_+$/, '')\n .trim();\n\n // regex → result key\n const map = [\n { key: 'search_terms', regex: /search_term/ },\n { key: 'campaigns', regex: /campaign/ },\n { key: 'targeting', regex: /targeting/ },\n { key: 'placement', regex: /placement/ },\n { key: 'budgets', regex: /budget/ },\n ];\n\n const entry = map.find(m => m.regex.test(baseName));\n const mappedKey = entry ? entry.key : null;\n\n console.log('fileName:', fileName);\n console.log('baseName:', baseName);\n console.log('mappedKey:', mappedKey);\n\n if (!mappedKey) {\n throw new Error(`${fileName} → ${baseName} → Unrecognized file name structure`);\n }\n result[mappedKey] = result[mappedKey] || [];\n result[mappedKey].push(item.json);\n}\n\nreturn [{ json: result }];\n\n\n\n.
Steg 4: konfigurera AI-granskning för optimering
Det här steget skickar det normaliserade datasetet till en språkmodell för optimeringsrekommendationer.
- Öppna AI Optimization Review och ställ in Text på
={{JSON.stringify($json)}}. - Låt Prompt Type vara inställt på
defineoch lämna det detaljerade instruktionsmeddelandet som det är. - Säkerställ att OpenAI Chat Engine är ansluten som språkmodell för AI Optimization Review.
- Inloggning krävs: anslut era openAiApi-uppgifter i OpenAI Chat Engine (AI-uppgifter kopplas till modellnoden, inte till kedjan).
Steg 5: konfigurera sändning av optimeringsmejl
Den här noden formaterar AI-svaret till en rik HTML-rapport och mejlar den till er konfigurerade mottagare.
- Öppna Send Optimization Email och ställ in Send To på
={{ $('Configure Email Settings').first().json.send_to }}. - Ställ in Subject på
={{ $('Configure Email Settings').first().json.subject }}. - Ställ in Message till det angivna uttrycket:
={{\n (() => {\n let raw = $node["AI Optimization Review"].json["text"];\n\n // 🔧 Remove triple backticks and optional "json" tag\n raw = raw.replace(/^```json\\s*/i, "").replace(/```$/, "").trim();\n\n let data;\n\n try {\n data = JSON.parse(raw);\n } catch (err) {\n return `.❌ Failed to parse AI output.
`;\n }\n\n let msg = "
${err.message}Amazon Ads Optimization Instructions
";\n\n // Optional Summary Totals\n const totalSpend = (data.campaign_adjustments || []).reduce((sum, c) => sum + (c.projected_daily_spend_usd || 0), 0);\n const totalSales = (data.campaign_adjustments || []).reduce((sum, c) => sum + (c.projected_daily_sales_usd || 0), 0);\n msg += `Total Budget Increase Recommended:
`;\n\n // Campaign Adjustments\n msg += "
`;\n msg += `Estimated daily spend: $${totalSpend.toFixed(2)}
`;\n msg += `Estimated daily sales: $${totalSales.toFixed(2)}Campaign Adjustments:
- ";\n (data.campaign_adjustments || []).forEach(c => {\n msg += `
- ${c.campaign_name}
- `;\n if (c.default_bid_multiplier !== undefined) {\n const percent = Math.round((1 - c.default_bid_multiplier) * 100);\n msg += `
- Default bid × ${c.default_bid_multiplier} (–${percent}%) `;\n }\n if (c.bid_adjustments) {\n msg += "
- Bid adjustments:
- ";\n msg += `
- Top of Search: ${c.bid_adjustments.top_of_search ?? 0}% `;\n msg += `
- Rest of Search: ${c.bid_adjustments.rest_of_search ?? 0}% `;\n msg += `
- Product pages: ${c.bid_adjustments.product_pages ?? 0}% `;\n msg += "
";\n }\n if (c.budget_change?.action !== "none") {\n msg += ` - Budget: ${c.budget_change.action} by ${c.budget_change.percent}% `;\n }\n if (c.projected_daily_spend_usd && c.projected_daily_sales_usd) {\n msg += `
- Est. daily spend: $${c.projected_daily_spend_usd.toFixed(2)} `;\n msg += `
- Est. daily sales: $${c.projected_daily_sales_usd.toFixed(2)} `;\n if (c.estimated_acos_percent !== undefined) {\n msg += `
- ACoS: ${c.estimated_acos_percent}% `;\n }\n if (c.estimated_roas_multiple !== undefined) {\n const color = c.estimated_roas_multiple < 1.0 ? 'red' : 'green';\n msg += `
- ROAS: ${c.estimated_roas_multiple.toFixed(2)}x `;\n }\n }\n msg += "
";\n });\n msg += "
Keyword Recommendations:
- ";\n (data.keyword_recommendations.add_exact || []).forEach(k => {\n msg += `
- Add exact: "${k.term}" in ${k.campaign_name} / ${k.ad_group_name} at $${k.suggested_bid} `;\n });\n (data.keyword_recommendations.negative || []).forEach(n => {\n if (typeof n === 'string') {\n msg += `
- Negative: "${n}" `;\n } else {\n msg += `
- Negative: "${n.term}" in ${n.campaign_name || 'Unspecified Campaign'} `;\n }\n });\n msg += "
Targeting Recommendations:
- ";\n data.targeting_recommendations.forEach(t => {\n const valueText = t.value ? ` by ${t.value}` : "";\n msg += `
- ${t.target} in ${t.campaign_name} / ${t.ad_group_name}: ${t.action}${valueText} `;\n });\n msg += "
- ${c.campaign_name}
- Inloggning krävs: anslut era gmailOAuth2-uppgifter i Send Optimization Email.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera parsning, AI-utdata och e-postleverans innan ni aktiverar i produktion.
- Klicka på Execute Workflow för att köra Manual Run Trigger med ett live-test.
- Verifiera att filer hämtas av Retrieve Drive Files och laddas ner av Download Drive File.
- Bekräfta att Normalize Report Data outputar ett kombinerat JSON-objekt med nycklar som
search_terms,campaignsochbudgets. - Kontrollera att AI Optimization Review returnerar JSON och att Send Optimization Email levererar ett HTML-mejl till den konfigurerade mottagaren.
- Slå om arbetsflödet till Active när det manuella testet lyckas.
Vanliga fallgropar
- Google Drive-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera: kontrollera först Google-kopplingen i n8n:s Credentials-panel och bekräfta sedan att mappen är delad med samma konto.
- Om du använder Wait-noder eller extern bearbetning varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet och dina budregler tidigt, annars kommer du att redigera resultaten i all evighet.
Vanliga frågor
Cirka 30 minuter om dina Drive-, Gmail- och OpenAI-inloggningar är klara.
Nej. Du kopplar främst konton och väljer rätt Drive-mapp. Den enda “tekniska” delen är att verifiera att dina rapporter importeras korrekt formaterade första gången.
Ja. n8n har ett gratis self-hosted-alternativ 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 kostnader för OpenAI API, som oftast är några cent per körning beroende på rapportstorlek.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, men gör det med eftertanke. De flesta duplicerar delarna “Retrieve Drive Files” och “Configure Email Settings” per konto och håller sedan en konsekvent namngivningsstandard så att logiken för “Assign File Label” och tolkningen inte blir förvirrad. Vanliga anpassningar är separata Gmail-mottagare per varumärke, en annan prompt per produktlinje och att filtrera Drive-filer till enbart exporter för “Last 30 Days”.
Oftast är det utgångna inloggningar eller att Drive-kontot saknar åtkomst till mappen du valde. Återanslut Google Drive i n8n och dubbelkolla sedan mappbehörigheterna och att workflowet pekar på rätt mapp-ID. Om det bara fallerar för vissa filer beror det ofta på filstorlek eller en export som fortfarande synkar när workflowet försöker ladda ner den.
I en typisk setup fungerar dussintals rapporter per körning utan problem, och om du self-hostar kan du skala vidare så länge din server har tillräckligt med minne för större XLSX-filer.
Ofta, ja. Det här workflowet är inte bara “flytta en fil och skicka ett mejl”; det förgrenar för XLSX vs CSV, slår ihop rapportunderlag, kör städning och anropar sedan en AI-modell med en strukturerad prompt. Den typen av flersteglogik kan bli dyr eller klumpig i Zapier/Make när du lägger till filter, formathantering och retries. n8n är också enklare att self-hosta, vilket spelar roll om du kör detta ofta. Om du bara behöver en enkel avisering “Drive-fil uppladdad → mejla mig” fungerar Zapier bra. Prata med en automationsexpert om du vill ha hjälp att välja.
När detta väl rullar slutar dina rapporter att vara “något du borde titta på” och blir i stället en kort lista med drag du kan göra i dag. Workflowet tar hand om de repetitiva delarna, så att du kan fokusera på besluten som faktiskt förändrar resultatet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.