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

Cloud Run + Sheets: privata anrop utan läckor

Rickard Andersson Partner, Nodenordic.se

Ditt ”enkla” Cloud Run-anrop blir en röra så fort du försöker hålla det privat. Du jonglerar auth-headers, kopierar tokens, kör om jobb efter slumpmässiga 401:or och klistrar sedan in resultat i ett Google Sheet som om det vore 2013.

Marketing ops-team märker det när kampanjdata behöver en snabb scrape eller berikning. Byråägare märker det när kundrapportering hänger på tillförlitliga batchjobb. Och om du är grundare vill du, ärligt talat, bara ha Cloud Run Sheets-automation som kör utan att du måste sitta barnvakt.

Det här arbetsflödet visar hur du anropar en privat (IAM-skyddad) Google Cloud Run-endpoint från n8n, loopar över poster i batchar och pushar korrekt formaterade utdata till Google Sheets. Inga publika endpoints. Ingen token-copy-paste. Bara ett repeterbart mönster du kan återanvända.

Så fungerar den här automationslösningen

Hela n8n-arbetsflödet, från trigger till slutligt resultat:

n8n Workflow Template: Cloud Run + Sheets: privata anrop utan läckor

Problemet: privata Cloud Run-anrop är irriterande sköra

Att anropa Cloud Run från en automation låter enkelt tills du håller tjänsten privat (vilket du bör). Plötsligt hanterar du servicekonton, försöker lista ut vilken token Cloud Run faktiskt förväntar sig och felsöker fel som ser likadana ut även när orsaken är helt olika. Sedan lägger du till batchning, och då blir det värre. En dålig request kan stoppa en hel körning, och nu blir ”snabbjobbet” en eftermiddag med omkörningar, partiella resultat och ”vilka rader har vi redan bearbetat?”-kalkylblad.

Friktionen bygger på. Några små problem blir snabbt ett arbetsflöde du inte litar på.

  • Team gör till slut Cloud Run-endpointen publik ”tillfälligt”, och sedan blir den kvar så i månader.
  • ID-tokens genereras på slumpmässiga ställen, lagras i anteckningar och går ut precis när du behöver dem.
  • Batchjobb fallerar mitt i loopen, vilket gör att du antingen missar poster eller råkar bearbeta samma objekt två gånger.
  • Resultat hamnar i Slack-meddelanden eller loggar, och någon måste ändå formatera dem för Google Sheets.

Lösningen: säkra Cloud Run → Sheets-anrop med återanvändbar autentisering

Det här n8n-arbetsflödet använder en tydlig, modulär metod: det anropar ett underarbetsflöde för att generera en Google ID-token från ett servicekonto, slår ihop den token med ”kontexten” för det du vill bearbeta och skickar sedan ett autentiserat HTTP-anrop till din Cloud Run-tjänst med Authorization: Bearer <id_token>. Endpointen förblir privat bakom Cloud IAM. Därifrån kan arbetsflödet distribuera en array med objekt, loopa över dem i batchar och upprepa samma säkra anrop för varje objekt tills jobbet är klart. Utdata blir strukturerad data som du kan skicka direkt till Google Sheets (eller vart du vill härnäst).

Arbetsflödet startar med en manuell trigger (för test) och en exempelkontext. Därefter injicerar det dina service-URL-variabler, hämtar en ID-token via underarbetsflödet Service Auth och bearbetar dina objekt i en batch-loop med ett Cloud Run API-anrop vid varje varv. När det är klart har du konsekventa, revisionsvänliga resultat i stället för en hög med engångsanrop.

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

Exempel: så här ser det ut

Säg att du kör ett veckovis berikningsjobb för 200 rader som behöver en anpassad scrape eller transformation (gjort i Cloud Run eftersom det kräver specifika Python-bibliotek). Manuellt kan du lägga cirka 2 minuter per rad på att generera tokens, testa requests och klistra in resultat, vilket blir ungefär 6–7 timmar. Med det här arbetsflödet triggar du en gång, låter det loopa i batchar och granskar bara slutresultatet. I praktiken blir det cirka 10 minuters uppsättning plus väntetid medan Cloud Run bearbetar.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
  • Google Cloud Run för att hosta din privata API-logik
  • Google Sheets för att lagra och dela resultat
  • Google Service Account-nyckel (ladda ner JSON från Google Cloud Console)

Kunskapsnivå: Medel. Du kommer främst konfigurera Google Cloud IAM och klistra in värden i n8n-variabler, inte skriva kod.

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

Så fungerar det

En manuell trigger startar körningen. I det medföljande arbetsflödet är det en Manual Start-nod, vilket är perfekt för test. I en riktig uppsättning kan du senare byta den mot en schematrigger, en webhook eller en ”ny rad i Sheets”-trigger.

Kontext och servicevariabler förbereds. Arbetsflödet sätter exempelkontext (tänk: raderna, ID:n eller payloaden du vill bearbeta) och sätter nyckelvariabler för Cloud Run som service_url (och valfritt en path).

Ett underarbetsflöde genererar Google ID-token. Det här är kärnan i säkerhetslösningen. n8n kör underarbetsflödet Service Auth med din service account-nyckel och returnerar sedan en giltig ID-token att använda i Authorization-headern.

Objekt distribueras och bearbetas i batchar. Arbetsflödet delar upp arrayen, loopar över objekt med Split in Batches och gör Cloud Run API-anropet för varje objekt. Om du matar resultat till Google Sheets lägger du normalt till en Sheets-åtgärd som ”append row” eller ”update row” direkt efter varje lyckat svar.

Du kan enkelt ändra request body och HTTP-metod så att det matchar din Cloud Run-tjänst. 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 och delas sedan upp i parallella konfigurationsgrenar.

  1. Lägg till eller öppna Manual Start Trigger.
  2. Bekräfta att det inte finns några obligatoriska fält att konfigurera för Manual Start Trigger.
  3. Verifiera körflödet: Manual Start Trigger skickar utdata parallellt till både Assign Sample Context och Assign Service Variables.

Parallella grenar innebär att både kontextdata och tjänstevariabler förbereds samtidigt. Säkerställ att båda grenarna är konfigurerade innan ni testar.

Steg 2: koppla kontext- och tjänstevariabler

Ställ in exempelkontexten och fälten för tjänstens endpoint som används genom hela arbetsflödet.

  1. Öppna Assign Sample Context och lägg till tilldelningar: sätt example_context till a very interesting value.
  2. I Assign Sample Context, sätt array_of_soups till ={{["ramen", "udon", "chicken noodle", "pho"]}}.
  3. Öppna Assign Service Variables och sätt service_url och service_path till er Cloud Run-bas-URL och endpoint-sökväg.

⚠️ Vanlig fallgrop: Om service_url eller service_path lämnas tomt kommer request-URL:en i Cloud Run API Call att resolvas fel.

Steg 3: sätt upp orkestrering av underarbetsflöden

Två execute workflow-noder berikar data och förbereder autentiseringsvärden för API-anrop.

  1. Öppna Run Sub-Workflow (Configure Required) 2 och välj målflödet i Workflow.
  2. I Run Sub-Workflow (Configure Required) 2, mappa indata: service_url till ={{ $json.service_url }} och service_path till ={{ $json.service_path }}.
  3. Öppna Run Sub-Workflow (Configure Required) och välj målflödet i Workflow.
  4. I Run Sub-Workflow (Configure Required), mappa indata: id_token till ={{ $json.id_token }}, service_url till ={{ $json.service_url }} och service_path till ={{ $json.service_path }}.

Om era underarbetsflöden genererar tokens eller extra fält, bekräfta att dessa fält returneras till det här arbetsflödet så att Cloud Run API Call kan använda dem.

Steg 4: kombinera och distribuera objekt för iterering

Slå ihop båda parallella grenarna, dela upp arrayen i objekt och iterera över varje element.

  1. Konfigurera Combine Context Data med Mode satt till combine och Combine By satt till combineAll.
  2. I Distribute Array Items, sätt Field To Split Out till array_of_soups och aktivera Include som allOtherFields.
  3. I Distribute Array Items, sätt Destination Field Name till soup.
  4. Öppna Iterate Items Batch och behåll standardinställningarna för batch (inga ändringar krävs).

Steg 5: konfigurera Cloud Run API-anropet

Varje objekt triggar ett Cloud Run-anrop med den beräknade URL:en.

  1. Öppna Cloud Run API Call och sätt URL till ={{ $('Iterate Items Batch').item.json.service_url }}{{ $('Iterate Items Batch').item.json.service_path }}.
  2. Sätt Authentication till genericCredentialType och Generic Auth Type till httpBearerAuth.
  3. Inloggningsuppgifter krävs: Anslut era httpBearerAuth-credentials i Cloud Run API Call.

⚠️ Vanlig fallgrop: Om bearer-token genereras i ett underarbetsflöde, säkerställ att den lagras i id_token och skickas in i Run Sub-Workflow (Configure Required) korrekt.

Steg 6: slutför iterationsloopen

Batch-loopen fortsätter tills alla objekt är behandlade och avslutas sedan korrekt.

  1. Bekräfta att Cloud Run API Call routar tillbaka till Iterate Items Batch för nästa objekt.
  2. Bekräfta att Iterate Items Batch skickar utdata till Finish Step när inga objekt återstår.
  3. Behåll Finish Step som en no-op-slutmarkör.

Steg 7: testa och aktivera ert arbetsflöde

Validera end-to-end-flödet innan ni aktiverar det i produktion.

  1. Klicka på Execute Workflow för att köra från Manual Start Trigger.
  2. Verifiera att Combine Context Data tar emot fält från både Assign Sample Context och Assign Service Variables.
  3. Kontrollera att Distribute Array Items skickar ut ett objekt per soppa och att Cloud Run API Call anropas för varje.
  4. Bekräfta att körningen når Finish Step efter att alla objekt har behandlats.
  5. När det fungerar, aktivera arbetsflödet med Active-reglaget för produktionsanvändning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google service account-uppgifter kan bli ogiltiga eller sakna rätt IAM-roll. Om anrop börjar fallera, kontrollera Cloud Run IAM för behörigheten Cloud Run Invoker och bekräfta att du använder rätt service account-nyckel i n8n.
  • Om du använder Wait-noder eller extern bearbetning varierar processtider. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du redigera utdata i all evighet.

Vanliga frågor

Hur lång tid tar det att sätta upp den här Cloud Run Sheets-automationen?

Cirka 45 minuter om din Cloud Run-tjänst redan finns.

Behöver jag kodkunskaper för att automatisera privata Cloud Run-anrop?

Nej. Du konfigurerar IAM, lägger in din service-URL och mappar en request body.

Är n8n gratis att använda för det här Cloud Run Sheets-arbetsflödet?

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 Google Cloud Run (ofta inom free-tier vid lätt användning).

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

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 hanterar n8n bra. Self-hosting ger obegränsat antal körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här Cloud Run Sheets-automationsflödet för en POST-request med en annan path?

Ja, och det är den vanligaste justeringen. Uppdatera variablerna i noden ”Assign Service Variables” (som service_url och service_path), och ändra sedan metod, path eller body i HTTP Request-noden ”Cloud Run API Call”. Många team byter också ut exempelkontexten i ”Assign Sample Context” för att i stället hämta rader från Google Sheets eller en Drive-fil.

Varför misslyckas min Google Cloud Run-anslutning i det här arbetsflödet?

Oftast handlar det om IAM eller fel tokentyp. Säkerställ att Cloud Run-tjänsten kräver autentisering, att ditt servicekonto har Cloud Run Invoker på tjänsten och att underarbetsflödet genererar en ID-token (inte en access token). Bekräfta också att du anropar exakt den Cloud Run-URL som matchar tjänstens audience, eftersom en liten avvikelse ändå kan ge en 401.

Hur många objekt kan den här Cloud Run Sheets-automationen hantera?

Om du self-hostar n8n finns ingen körningsgräns (det beror främst på din server och Cloud Run-begränsningar). På n8n Cloud beror dina månadsvisa körningar på din plan, så stora batchjobb kan driva dig till en betald nivå. I praktiken kör team ofta hundratals eller några tusen objekt genom att använda Split in Batches och hålla varje Cloud Run-svar lättviktigt.

Är den här Cloud Run Sheets-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det som brukar vara avgörande är autentiseringen: n8n gör det enklare att köra ett återanvändbart underarbetsflöde för ”Service Auth” och sedan loopa i batchar utan att betala extra för varje gren. Zapier eller Make kan fortfarande fungera för enkla anrop med låg volym, men de blir klumpiga när du behöver tajt kontroll över headers, tokengenerering och omkörningar. En annan fördel: self-hosting är ett riktigt alternativ, vilket förändrar kalkylen för jobb med hög volym. Om du är osäker, prata med en automationsexpert så kan du verklighetschecka den billigaste vägen.

När detta väl är på plats slutar privata Cloud Run-anrop vara ett skört science project. Du får stabila körningar, strukturerade utdata och ett arbetsflöde du kan återanvända varje gång du behöver automatisera Cloud Run till Sheets.

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