Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Google sheets till Google drive: UGC-annonser klara

Rickard Andersson Partner, Nodenordic.se

Din pipeline för annonskreativitet havererar troligen på samma tråkiga ställe varje gång. Någon uppdaterar ett Google Sheet, någon annan genererar material, sedan klistras länkar runt i Slack och de ”slutgiltiga” filerna hamnar utspridda i Drive-mappar.

Den här UGC ads automation slår hårdast mot performance marketers, men byråägare och interna e-handelsansvariga känner av den också. Utfallet är enkelt: du gör om varje rad i ett kalkylark till en annonsbild (och valfritt en kort video på 5–8 sekunder), och Drive-länkar skrivs tillbaka automatiskt.

Nedan ser du hur flödet går från kalkylarksrad till delningsbar Drive-tillgång, var tidsvinsterna faktiskt kommer ifrån och vad du behöver för att köra det stabilt.

Så här fungerar automationen

Hela n8n-workflowen, från trigger till slutresultat:

n8n Workflow Template: Google sheets till Google drive: UGC-annonser klara

Problemet: UGC-variationer tar för lång tid att producera

UGC-annonser fungerar bara när du kan testa många variationer. Olika hooks, olika ”presentatörer”, olika produktvinklar, olika overlays. Men sättet de flesta team tar fram variationer på är en kedja av små manuella steg: kopiera en produktlänk från ett ark, generera en bild någonstans, ladda ner den, ladda upp den till Drive, göra den publik, klistra tillbaka länken och sedan göra om allt för video. En missad behörighetsinställning och allt faller på sämsta möjliga tidspunkt. Den mentala belastningen är påtaglig eftersom du hela tiden dubbelkollar länkar, filnamn och vilken version som godkändes.

Det växer snabbt. Här är var det brister.

  • Varje ny SKU eller idé innebär att du upprepar samma 8–10 mikrouppgifter bara för att få ut en delningsbar tillgång.
  • Drive-länkar är ofta inte ”direkta”, så bild-/video-API:er kan inte hämta dem och du fastnar med att felsöka behörigheter i stället för att testa kreativa varianter.
  • Manuell kopiering av bild- och video-URL:er tillbaka till Sheets skapar misstag, och de misstagen saboterar spårningen utan att det märks direkt.
  • När du vill ha 20 variationer skalar inte arbetsflödet, så du nöjer dig med 5 och hoppas på det bästa.

Lösningen: gör om varje kalkylarksrad till Drive-klara UGC-tillgångar

Det här flödet använder n8n för att behandla ditt Google Sheet som en produktionskö för kreativa. Du lägger till rader med en produktlänk och en prompt (plus valfria fält som ”presenter”), och automationen genererar en annonsbild, laddar upp den till Google Drive och skriver tillbaka den resulterande länken i samma rad. Om du aktiverar videozonerna går den längre: den analyserar den genererade bilden, skapar strukturerade scenbeskrivningar, renderar ett kort klipp på 5–8 sekunder (Veo3 och valfritt WAN2.2), laddar upp MP4:an till Drive och skriver även video-URL:en tillbaka till arket. Slutresultatet är ett kalkylark som blir en levande katalog av delningsbara tillgångar, inte en att-göra-lista som måste jagas ikapp.

Flödet startar från en manuell körning i n8n (så du styr när batchar produceras). Google Sheets står för indata, HTTP-anrop hanterar AI-jobben och Google Drive blir den enda sanningskällan för filer. Till sist uppdateras Google Sheets så att teamet alltid har de senaste länkarna utan att behöva leta.

Det här får du: automation vs. resultat

Exempel: så här ser det ut i praktiken

Säg att du vill testa 10 UGC-bildvariationer för en produkt. Manuellt kan du lägga cirka 10 minuter per variation på att generera bilden, ladda ner den, ladda upp till Drive, fixa delningsbehörigheter och klistra tillbaka länken, vilket blir ungefär 1,5–2 timmar. Med det här flödet lägger du in 10 rader i ditt Sheet, kör automationen en gång och väntar på bearbetning (ofta under en timme totalt beroende på modellkön). Din ”mänskliga tid” sjunker till cirka 10 minuter för uppsättning och snabb granskning, och sedan dyker Drive-länkarna upp direkt i arket.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att lagra prompter, produktlänkar och resultat.
  • Google Drive för att lagra tillgångar och dela länkar.
  • Fal.ai API-nyckel (hämta den från Fal.ai och spara som env FAL_KEY).

Kunskapsnivå: Medel. Du kopplar OAuth-credentials, lägger in en API-nyckel och är bekväm med att testa en zon i taget.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

Du triggar en körning från n8n. Flödet börjar med en manuell start, vilket är användbart när du vill ha kontrollerad batchgenerering för en specifik kampanj eller ett visst SKU-set.

Rader hämtas från Google Sheets och städas upp. Det läser från fliken du satt upp (till exempel ”Gemini” för enbart bild eller ”nanoBanana” för bild-till-video). Sedan konverterar det Drive-länkar till direkta ”uc?export=view&id=”-URL:er, vilket är det de flesta genereringstjänster faktiskt kan hämta.

Bilder (och videor) genereras via API-anrop. För bilder kan flödet anropa OpenRouter/Gemini och konvertera base64 till en riktig fil, eller använda Fal.ai nano-banana och polla tills jobbet är klart. För video skapar det scenbeskrivningar, tvingar fram strukturerad JSON, skickar ett bild-till-video-jobb (Veo3 och valfritt WAN2.2) och loopar tills MP4:an är redo.

Filer hamnar i Google Drive och arket blir din dashboard. n8n laddar upp bilden/videon till Drive och skriver direkt tillbaka img_url och video_url i samma rad. På så sätt har du alltid ”källa + output” på ett ställe.

Du kan enkelt ändra videons bildformat för att matcha TikTok, Reels eller YouTube Shorts utifrån dina 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 bild- och videopipelinen från början till slut innan ni aktiverar den.

  1. Lägg till noden Manual Start Trigger som arbetsflödets trigger.
  2. Lämna standardinställningarna för Manual Start Trigger (inga parametrar krävs).
  3. Koppla Manual Start Trigger till Fetch Video Sheet Row för att starta flödet.

Steg 2: Anslut Google Sheets

Dessa noder hämtar källraderna för bild-/videogenerering och uppdaterar länkar efter att resurserna har skapats.

  1. Öppna Fetch Video Sheet Row och välj ert kalkylark i Document (ersätt [YOUR_ID]), och välj Sheet Name-värdet nanoBanana.
  2. Öppna Utility: Fetch Image Sheet Row och välj kalkylarket i Document (ersätt [YOUR_ID]) och Sheet Name-värdet Gemini.
  3. Öppna Utility: Update Image Link och bekräfta att Operation är satt till appendOrUpdate.
  4. Öppna Update Video Link och bekräfta att Operation är satt till appendOrUpdate.
  5. Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till Fetch Video Sheet Row, Utility: Fetch Image Sheet Row, Utility: Update Image Link och Update Video Link.

Steg 3: Sätt upp bildgenerering och lagring

Den här vägen transformerar URL:er, genererar en bild med OpenRouter, konverterar den till en fil och laddar upp till Drive innan den skriver tillbaka till Sheets.

  1. I Utility: Map Image URLs, behåll Include Other Fields aktiverat och behåll uttrycken som omvandlar Drive-länkar till URL:er för direktvisning.
  2. I Utility: Generate Image via OpenRouter, ställ in URL till https://openrouter.ai/api/v1/chat/completions och behåll JSON Body som ={ ... "text": "{{ $json.prompt }}" ... "url": "{{ $json.product }}" ... }.
  3. Ställ in Utility: Delay 10 Seconds Amount till 10 för att låta bildgenereringen bli klar.
  4. I Utility: Extract Base64 Payload, behåll JavaScript-koden som extraherar data, mimeType och fileName från OpenRouter-svaret.
  5. I Utility: Convert Data to File, ställ in Operation till toBinary och Source Property till data, med File Name ={{ $json.fileName }} och Mime Type ={{ $json.mimeType }}.
  6. I Utility: Upload Image to Drive, välj er mål-Folder (ersätt [YOUR_ID]) och behåll Name som output.png.
  7. I Utility: Update Image Link, behåll mappningen så att img_url är ={{ $json.webViewLink }} och product är ={{ $('Utility: Fetch Image Sheet Row').item.json.product }}.
  8. Inloggningsuppgifter krävs: Anslut era httpHeaderAuth-inloggningsuppgifter till Utility: Generate Image via OpenRouter.
  9. Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter till Utility: Upload Image to Drive.

⚠️ Vanlig fallgrop: Om Utility: Extract Base64 Payload misslyckas, verifiera att OpenRouter-svaret innehåller choices[0].message.images[0].image_url.url och att er API-nyckel har åtkomst till bildgenerering.

Steg 4: Sätt upp AI-analys och videopromptning

Den här delen analyserar den renderade bilden, tar fram strukturerade scenbeskrivningar och förbereder promptar för videogenerering.

  1. I Inspect Image Content, bekräfta att Resource är image och behåll uttrycket för Image URLs som normaliserar Google Drive-länkar till URL:er för direktnedladdning.
  2. I Compose Scene Descriptions, behåll prompttexten och säkerställ att Prompt Type är define med hasOutputParser aktiverat.
  3. I Parse Structured Output, behåll Schema Type som manual och lämna JSON-schemat som det är angivet.
  4. Bekräfta att OpenAI Chat Engine är ansluten som språkmodell för Compose Scene Descriptions och Parse Structured Output (inloggningsuppgifter måste läggas till i OpenAI Chat Engine).
  5. Inloggningsuppgifter krävs: Anslut era openAiApi-inloggningsuppgifter till Inspect Image Content och OpenAI Chat Engine.

⚠️ Vanlig fallgrop: Lägg inte till inloggningsuppgifter i Parse Structured Output—det är en subnod och använder modellens inloggningsuppgifter från OpenAI Chat Engine.

Steg 5: Konfigurera videogenerering, polling och leverans

Den här delen skapar videor, pollar deras status, laddar ner den färdiga filen, laddar upp till Drive och uppdaterar ert kalkylark.

  1. I Request NanoBanana Edit, ställ in URL till =https://queue.fal.run/fal-ai/{{ $('Fetch Video Sheet Row').item.json.model }}/edit och behåll JSON Body-fälten prompt och image_urls som visat.
  2. I Retrieve Image Status, behåll URL satt till ={{ $json.status_url }}, och bekräfta sedan att Check Image Status jämför ={{ $json.status }} med COMPLETED.
  3. I Fetch Rendered Image, ställ in URL till =https://queue.fal.run/fal-ai/nano-banana/requests/{{ $json.request_id }}.
  4. I Request Veo3 Video, behåll JSON Body där prompt är satt till ={{ $json.output.characters[0].description }}{{ $json.output.scene_description }}{{ $json.output.camera_movement }}{{ $json.output.object_movements }}{{ $json.output.sound_effects }} och image_url till ={{ $('Fetch Rendered Image').item.json.images[0].url }}.
  5. Använd Iterate Video Jobs för att loopa igenom jobb, och bekräfta att Delay Video Poll matar in i Retrieve Video Status för polling.
  6. I Route Video Status, behåll de tre statusreglerna COMPLETED, IN_PROGRESS och IN_QUEUE för att styra polling-loopen.
  7. I Download Video File, behåll URL som ={{ $json.video.url }}, och ladda sedan upp via Upload Video to Drive med Name ={{ $json.video.url }}.
  8. I Update Video Link, behåll mappningar så att product är ={{ $('Fetch Video Sheet Row').item.json.product }} och video_url är ={{ $json.webViewLink }}.
  9. Inloggningsuppgifter krävs: Anslut era httpHeaderAuth-inloggningsuppgifter till alla HTTP request-noder som används för rendering och video (t.ex. Request NanoBanana Edit, Retrieve Image Status, Fetch Rendered Image, Request Veo3 Video, Retrieve Video Status, Fetch Completed Video, Download Video File).
  10. Inloggningsuppgifter krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter till Upload Video to Drive.

⚠️ Vanlig fallgrop: Säkerställ att statusendpoints returnerar status_url och response_url; saknade värden kommer att slå sönder Retrieve Video Status och Fetch Completed Video.

Steg 6: Testa och aktivera ert arbetsflöde

Kör ett fullständigt test för att bekräfta att bildgenerering, analys och videoleverans slutförs korrekt.

  1. Klicka på Execute WorkflowManual Start Trigger för att köra ett test.
  2. Verifiera att Utility: Update Image Link skriver en Drive-URL till img_url och att Update Video Link skriver en Drive-URL till video_url i era Sheets.
  3. Bekräfta att Upload Video to Drive och Utility: Upload Image to Drive skapade filer i förväntad mapp.
  4. Efter ett lyckat test, växla arbetsflödet till Active för användning i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Delningsinställningar i Google Drive spelar större roll än många tror. Om filen inte är satt till ”Alla med länken → Visare” kan bild- och videogenererings-API:er ge 403-fel, så kontrollera filbehörigheterna i Drive först.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
  • Fal.ai-credentials och jobbendpoints är strikta med headers och JSON-form. Om körningar plötsligt misslyckas, kontrollera att Authorization-headern fortfarande matchar din FAL_KEY och att dina uttryck returnerar objekt (inte JSON-strängar).

Vanliga frågor

Hur lång tid tar det att sätta upp den här UGC ads automation-automationen?

Cirka 30 minuter om dina inloggningar och credentials är klara.

Behöver jag kunna koda för att automatisera UGC ads automation?

Nej. Du kommer mest att koppla konton och ändra några fält i ditt Google Sheet.

Är n8n gratis att använda för det här UGC ads automation-workflowet?

Ja. n8n har ett gratisalternativ för egen hosting 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 Fal.ai och LLM-användning, som beror på hur många bilder och 5–8 sekunders videor du genererar.

Var kan jag hosta n8n för att köra den här automationen?

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.

Kan jag anpassa det här UGC ads automation-workflowet för vertikala 9:16-videor?

Ja, men du vill göra det i delen som skickar videoförfrågan. Uppdatera prompten och parametrarna för bildförhållande i noden Veo3 (HTTP Request) och håll scenutdata konsekvent genom att justera agentprompten i ”Compose Scene Descriptions”. Vanliga justeringar är att byta 1:1 till 9:16, tvinga regler för text på skärmen och strama upp scenlängden så att klippet håller sig inom fönstret på 5–8 sekunder.

Varför fallerar min Google Drive-anslutning i det här flödet?

Oftast handlar det om OAuth-behörigheter eller en uppdaterad token som inte sparades. Återanslut Google Drive-credentialen i n8n och bekräfta sedan att mål-mappen är åtkomlig för det Google-kontot. Kontrollera också delningsinställningarna på källbilderna för produkten, eftersom en privat Drive-fil kan se ut som ett ”genereringsfel” när det i själva verket är ett hämtningsfel.

Hur många rader klarar den här UGC ads automation-automationen?

På en typisk n8n Cloud-plan kör de flesta team batchar på 20–100 rader utan problem, och skalar sedan upp när de validerat output och kötider. Om du kör egen hosting finns ingen exekveringsgräns, men du begränsas fortfarande av API rate limits, modellköer och din servers CPU/RAM när större MP4:or laddas ner. Rent praktiskt: börja smått. Få en körning som går igenom, och öka sedan batchstorleken med Split in Batches så att fel inte slår ut hela produktionskörningen.

Är den här UGC ads automation-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här flödet bygger på att polla långkörande jobb, loopa genom batchar, hantera binära filer och tvinga fram strukturerad AI-output, vilket är där n8n brukar vara mer flexibelt och mer kostnadseffektivt. Zapier och Make kan göra delar av det, men videoproduktion i flera steg plus filhantering blir dyrt snabbt. Om ditt use case strikt är ”skapa en bild och ladda upp den” kan enklare verktyg räcka. Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på dina volymer.

När detta väl rullar slutar ditt kalkylark vara en påminnelse och blir ett produktionssystem. Sätt upp det, generera i batchar och fortsätt testa utan länkkarusellen.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal