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

Google Cloud Run + Google Sheets: kör jobb säkert

Rickard Andersson Partner, Nodenordic.se

Du satte upp en Cloud Run-tjänst som privat av en anledning. Sedan frågar någon: ”Kan vi trigga den från ett kalkylark?” och plötsligt sitter du med en rörig mix av exponerade endpoints, kopierade tokens och halvfungerande script.

Det här drabbar Ops-ansvariga och marknadsförare som kör kampanjer från Sheets, men byråteam känner också av det när kundernas ”one-click”-önskemål börjar staplas. Med den här Cloud Run-automationen kan du trigga säkra jobb från Google Sheets och samtidigt hålla IAM nedlåst.

Det här arbetsflödet visar hur du genererar en kortlivad Google identity token i n8n och sedan anropar din privata Cloud Run-tjänst på ett säkert sätt. Du ser vad det löser, vad du behöver, och var det oftast går snett.

Så här fungerar automationen

Se hur detta löser problemet:

n8n Workflow Template: Google Cloud Run + Google Sheets: kör jobb säkert

Utmaningen: trigga Cloud Run utan säkerhetshål

Privata Cloud Run-tjänster är kanon tills du behöver ett enkelt sätt för ett team att köra dem på beställning. Den vanliga ”snabbfixen” är att göra endpointen publik med en delad hemlighet, eller att skicka runt en långlivad token som till slut hamnar i ett dokument, en Slack-tråd och någons urklippshistorik. Sedan slutar det fungera. Eller värre: det slutar inte fungera och du märker aldrig att den läckte. Under tiden behöver verksamheten fortfarande resultatet: köra ett jobb, uppdatera data, starta en process och logga vad som hände.

Inget av det här känns svårt var för sig. Tillsammans blir det en säkerhets- och driftskatt du betalar varje vecka.

  • Folk exponerar en ”tillfällig” publik endpoint som i tysthet blir permanent.
  • Manuell tokenhantering blir supportärenden när tokens går ut mitt i en körning.
  • Små ändringar (ny tjänst-URL, ny audience, nya behörigheter) bryter anropet och ingen vet var man ska felsöka.
  • Du tappar förtroende för körningar eftersom det saknas en konsekvent, repeterbar autentiseringsväg.

Lösningen: säkra Cloud Run-anrop från Sheets (via n8n)

Det här n8n-arbetsflödet ger dig ett strukturerat, repeterbart sätt att anropa en autentiserad (privat) Cloud Run-tjänst utan att göra den publik och utan att kopiera/klistra in tokens. Det börjar med att mappa några indata (som din Cloud Run service-URL och e-postadressen till ett Google service account). Sedan genererar det en signerad JWT med din privata nyckel för servicekontot, byter den JWT:n mot Googles OAuth token-endpoint och får tillbaka en kortlivad ID-token. Till sist anropar det din Cloud Run-URL med Authorization: Bearer <id_token> så att Cloud Run kan verifiera anroparen via IAM. Det är avsiktligt minimalt. Färre rörliga delar, färre överraskningar.

Arbetsflödet startar när du kör det i n8n (manuellt, eller från en annan trigger som du lägger till senare). Därefter bygger och signerar det JWT:n, byter den mot en ID-token och anropar Cloud Run med den token. Resultatet blir ett lyckat tjänstsvar som du kan logga, spara eller skriva tillbaka till Google Sheets.

Vad som förändras: före vs. efter

Praktisk effekt

Säg att ditt team triggar ett Cloud Run-jobb från ett Sheet cirka 10 gånger i veckan (uppdatera en rapport, synka leads, generera en fil). Manuellt tar det ofta 10 minuter per körning att leta upp rätt token, inse att den gått ut, skapa en ny och testa igen. Det är ungefär 100 minuter i veckan, plus avbrotten. Med det här arbetsflödet är ”människotiden” i princip att öppna Sheet och trigga körningen (ungefär en minut), medan n8n sköter tokenutbyte och det säkra anropet i bakgrunden.

Krav

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
  • Google Cloud Run för att hosta den privata jobb-endpointen.
  • Google Sheets för att lagra indata och trigga körningar.
  • Nyckel för Google service account (ladda ner JSON från Google Cloud Console → IAM & Admin).

Kunskapsnivå: Medel. Du kommer inte att skriva kod, men du behöver kopiera credential-fält noggrant och förstå grundläggande IAM-behörigheter.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Arbetsflödets flöde

En manuell körning (eller din egen trigger) startar allt. Det medföljande arbetsflödet använder en Manual Start Trigger så att du kan testa säkert, och senare byta till Google Sheets, en webhook, ett schema eller ett knappstyrt flöde.

Indata mappas till formatet Google förväntar sig. I steget ”Map Input Variables” definierar du Cloud Run service-URL, servicekontots e-postadress (client_email) och Googles token-endpoint (https://oauth2.googleapis.com/token) så att arbetsflödet vet var det ska byta credentials.

En JWT skapas och signeras med din service account-nyckel. n8n använder din inklistrade PEM privata nyckel (hela BEGIN/END-blocket) för att skapa en signerad JWT som representerar ”det här arbetsflödet agerar som det här servicekontot”.

JWT:n byts mot en ID-token och sedan anropas Cloud Run. Den första HTTP-förfrågan går till Google OAuth för att hämta token. Den andra HTTP-förfrågan anropar din Cloud Run-tjänst med Authorization: Bearer, vilket gör att Cloud Run kan upprätthålla IAM utan att du exponerar något publikt.

Du kan enkelt modifiera triggern (manuell körning) till en Google Sheets-raduppdatering utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: konfigurera den manuella triggern

Det här arbetsflödet startar manuellt så att ni kan testa tokenutbytesflödet innan ni automatiserar det.

  1. Lägg till noden Manual Start Trigger som arbetsflödets trigger.
  2. Lämna standardinställningarna som de är, eftersom inga fält krävs.

Steg 2: anslut indata-variabler

Definiera URL:en till Cloud Run-tjänsten och e-postadressen för servicekontot som ska användas för att bygga JWT:n.

  1. Lägg till noden Map Input Variables ansluten till Manual Start Trigger.
  2. Ställ in Moderaw.
  3. Ställ in JSON Output till { "service_url": "_____INSERT_____", "client_email": "_____INSERT_____", "token_uri": "https://oauth2.googleapis.com/token" }.

⚠️ Vanlig fallgrop: Ersätt värdena _____INSERT_____ med er faktiska Cloud Run-URL och e-postadress för servicekontot, annars blir JWT:n ogiltig.

Steg 3: konfigurera skapande av JWT

Generera en signerad JWT med hjälp av servicekontot som riktar sig mot er Cloud Run-tjänst.

  1. Lägg till noden Generate JWT Token efter Map Input Variables.
  2. Credential Required: Anslut era jwtAuth-uppgifter.
  3. Aktivera Use JSON.
  4. Ställ in Claims JSON till ={ "iss": "{{ $json.client_email }}", "sub": "{{ $json.client_email }}", "aud": "{{ $json.token_uri }}", "iat": {{ Math.floor(Date.now() / 1000) }}, "exp": {{ Math.floor(Date.now() / 1000) + 3600 }}, "target_audience": "{{ $json.service_url }}" }.

Steg 4: konfigurera tokenutbyte och Cloud Run-anrop

Byt ut JWT:n mot en bearer-token och använd den för att anropa er Cloud Run-tjänst.

  1. Lägg till noden Exchange for Bearer Token ansluten till Generate JWT Token.
  2. Ställ in URL till ={{ $('Map Input Variables').item.json.token_uri }}.
  3. Ställ in MethodPOST och aktivera Send Body.
  4. Ställ in Content Typeform-urlencoded och Specify Body till string.
  5. Ställ in Body till =grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={{ $json.token }}.
  6. Lägg till noden Invoke Cloud Run Service ansluten till Exchange for Bearer Token.
  7. Ställ in URL till ={{ $('Map Input Variables').item.json.service_url }}.
  8. Ställ in Authentication till genericCredentialType och Generic Auth Type till httpBearerAuth.
  9. Credential Required: Anslut era httpBearerAuth-uppgifter.

Tips: Säkerställ att bearer-tokenen från Exchange for Bearer Token skickas i Authorization-headern via er konfiguration av httpBearerAuth-uppgifter.

Steg 5: testa och aktivera ert arbetsflöde

Kör ett manuellt test för att bekräfta att tokenutbytet och Cloud Run-anropet lyckas.

  1. Klicka på Execute Workflow och trigga Manual Start Trigger.
  2. Verifiera att Generate JWT Token returnerar ett giltigt fält token.
  3. Bekräfta att Exchange for Bearer Token returnerar en åtkomsttoken i svaret.
  4. Kontrollera att Invoke Cloud Run Service returnerar det förväntade svaret från er Cloud Run-endpoint.
  5. När allt fungerar, 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

Se upp för

  • Google Cloud-credentials kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, börja med att kontrollera servicekontots IAM-roller och Cloud Run-tjänstens flik ”Permissions” i Google Cloud Console.
  • Om du använder Wait-noder eller extern rendering varierar processningstiderna. Öka väntetiden om efterföljande noder faller på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata i all evighet.

Vanliga frågor

Hur snabbt kan jag implementera den här Cloud Run-automationen?

Cirka 30 minuter om din Cloud Run-tjänst och ditt servicekonto redan finns.

Kan icke-tekniska team implementera den här säkra Cloud Run-körningen?

Ja, men de behöver göra en noggrann initial uppsättning. När credentials väl är på plats känns användningen som att trycka på en knapp.

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

Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in användning av Google Cloud, vilket ofta är inom gratisnivån för lättare Cloud Run-jobb.

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 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.

Hur anpassar jag den här Cloud Run-automationslösningen till mina specifika behov?

Du kan behålla samma mönster med JWT → tokenutbyte → Cloud Run-anrop och byta trigger. Vanliga justeringar är att hämta service_url och request-payloads från Google Sheets, anropa olika Cloud Run-routes för olika ”jobtyper” och skriva tillbaka svaret till en statuskolumn så att folk ser lyckat/misslyckat utan att behöva fråga dig.

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

Oftast är det IAM eller fel audience/service-URL. Bekräfta att Cloud Run-tjänsten kräver autentisering, att servicekontot har rollen Cloud Run Invoker på den tjänsten, och att arbetsflödet byter till en ID-token (inte bara en access token). Om den privata nyckeln klistrades in utan hela BEGIN/END-blocket kan JWT-signeringen misslyckas på ett sätt som ser ut som ”Google avvisade min begäran”, vilket är ärligt talat förvirrande första gången.

Vilken kapacitet har den här Cloud Run-automationslösningen?

Mer än tillräckligt för de flesta små team: varje körning är bara ett par HTTP-förfrågningar plus ditt Cloud Run-jobb. På n8n Cloud skalar du via planens antal körningar, och vid egen drift beror det främst på serverstorlek och hur snabbt Cloud Run returnerar svar.

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

Ofta, ja. Det här mönstret kräver signerad JWT-hantering och tydlig kontroll över headers, tokenutbyte och retries, och där är n8n helt enkelt bekvämare. Du kan dessutom köra egen drift, vilket spelar roll när du börjar trigga jobb ofta. Zapier och Make kan fungera, men du lägger vanligtvis mer tid på att bråka med auth-edge cases eller betala för premiumsteg. Vill du att någon kvalitetssäkrar upplägget, prata med en automationsexpert så får du ett rakt svar.

När det här väl är på plats slutar säkra Cloud Run-körningar att vara en skör ritual. Arbetsflödet sköter auth-ceremonin så att teamet kan leverera.

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