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 + Google Drive för rankade kandidater

Rickard Andersson Partner, Nodenordic.se

En rekryteringsgranskning ska inte kännas som att spela spreadsheet-whack-a-mole. Men när kandidater kommer in i stökiga CSV-filer slutar det med att alla kopierar kolumner, jagar LinkedIn-länkar och skriver om samma ”varför”-anteckningar från noll.

Rekryterare märker det först. Sedan ber rekryterande chef om ”en rankad shortlist till i morgon”, och plötsligt dras även ops eller en byråpartner in i kaoset. Den här automatiseringen för kandidatrankning ger dig en strukturerad shortlist i Google Sheets med konsekvent 0–100-poängsättning och tydliga förklaringar på hebreiska.

Nedan ser du hur flödet körs i n8n, vad det ersätter i er nuvarande process och de praktiska inställningsdetaljerna för att få det att fungera utan att förvandla veckan till ett tekniskt projekt.

Så här fungerar automatiseringen

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

n8n Workflow Template: Google Sheets + Google Drive för rankade kandidater

Problemet: kandidatreviews blir långsamma och inkonsekventa

När du utvärderar kandidater från en CSV eller XLSX är det de ”enkla” delarna som dränerar dig. Någon laddar upp en fil till Drive, någon annan skapar ett Sheet, och sedan inser ni att rubrikerna inte matchar förra gången. Nu letar du LinkedIn-URL:er, skummar senaste aktiviteten och försöker hålla anteckningarna tillräckligt konsekventa för att kunna motivera ett beslut senare. Multiplicera det med en batch på 20 kandidater och en lång eftermiddag är borta. Än värre: två granskare kan läsa samma profil och sätta helt olika betyg, vilket gör att shortlisten känns godtycklig.

Friktionen växer snabbt. Här är var det oftast faller isär.

  • Att copy-pasta kandidatrader till ett ”master”-Sheet skapar formateringsdrift och dolda fel som du ofta upptäcker först efter att du delat det.
  • LinkedIn-kontroller görs inkonsekvent, så en kandidat får ”djup research” och nästa får en 30-sekunders snabbkoll.
  • Poängrubriker tillämpas olika av olika personer, vilket gör shortlisten svår att lita på och ännu svårare att förklara.
  • När något fallerar mitt i processen får du ofta veta det efter mötet, inte innan.

Lösningen: ladda upp en gång, få en rankad shortlist i Google Sheets

Det här flödet omvandlar uppladdningar av kandidatfiler till en poängsatt, formaterad shortlist – automatiskt. En formulärinsändning triggar flödet, sparar den uppladdade CSV/XLSX-filen i Google Drive och skapar ett nytt Google Sheet för just den batchen. Därefter extraherar den rader från filen, lägger in dem i Sheetet och skapar de extra kolumner du vill ha (poäng, hebreisk förklaring, LinkedIn-insikter). Sedan loopar en AI-agent igenom varje kandidat, hämtar upp till tre senaste LinkedIn-inlägg via Apify och utvärderar kandidaten mot era krav med en OpenAI-chattmodell (GPT-4.1). Till sist skriver den tillbaka resultaten till Sheetet, sorterar på poäng och applicerar professionell formatering med RTL-stöd så att granskare snabbt kan skumma, fatta beslut och känna sig trygga.

Flödet börjar med en uppladdning, normaliserar sedan din data (CSV eller XLSX), berikar den med LinkedIn-kontext och avslutar med att leverera en rankad lista i Google Sheets. Om något går fel någonstans skickar en feltrigger ett varningsmejl så att du inte felsöker i blindo.

Det du får: automation vs. resultat

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

Säg att du granskar 20 kandidater för en roll. Manuellt, om du lägger cirka 15 minuter per kandidat på att kolla LinkedIn, föra in anteckningar i ett Sheet och enas om en poäng, blir det ungefär 5 timmar fokuserat arbete (och oftast med några avbrott). Med det här flödet laddar du upp en CSV/XLSX på en minut eller två och låter sedan agenten köra igenom batchen medan du gör annat. Även om bearbetningen tar runt en timme i bakgrunden får du fortfarande tillbaka större delen av de 5 timmarna – plus ett rankat Sheet som är redo att delas.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
  • Google Drive för att ta emot och lagra uppladdade filer
  • Google Sheets för att skapa den rankade shortlist-tabellen
  • OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
  • Apify API-nyckel (hämta den i din Apify Console)
  • Gmail-konto för att skicka felvarningsmejl

Kunskapsnivå: Medel. Du kopplar in behörigheter, klistrar in API-nycklar och uppdaterar några ID:n (som Drive-mappen) utan att skriva riktig kod.

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

Så fungerar det

En formuläruppladdning drar igång allt. Någon skickar in en CSV/XLSX med kandidater, och n8n laddar direkt upp den till en Google Drive-mapp så att batchen är sparad och spårbar.

Filen konverteras till ett användbart Sheet. Flödet laddar ner filen, skapar ett nytt Google Sheet och styr parsningen baserat på filtyp (CSV eller XLSX). Sedan slår det ihop den parsade outputen och lägger till kandidatraderna i Sheetet.

En AI-agent utvärderar varje rad med LinkedIn-kontext. Den läser rader från Google Sheets, hämtar upp till tre senaste LinkedIn-inlägg via Apify och använder sedan GPT-4.1 för att skapa en 0–100-poäng samt en professionell hebreisk förklaring som följer er rubric.

Den rankade shortlisten formateras och levereras. Flödet uppdaterar varje kandidatrad, applicerar styling och RTL-vänlig formatering via Google Sheets-requests, sorterar på poäng och mejlar dig om en feltrigger aktiveras.

Du kan enkelt justera poängrubriken för att matcha en specifik roll eller senioritetsnivå utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera formulärtriggern

Konfigurera startpunkten för arbetsflödet så att kandidater kan skicka in sin CSV/XLSX-fil via det inbyggda formuläret.

  1. Lägg till noden Form Submission Trigger och behåll Form Title inställt på Upload CSV File.
  2. I Form Fields, säkerställ att etiketten för filfältet är New File Attachment och att Accept File Types är csv,xlsx,xls.
  3. Anslut Form Submission Trigger till Drive File Upload för att starta filbearbetningen vid inskick.

Steg 2: Anslut Google Drive och skapa kalkylark

Ladda upp den inskickade filen till Drive, ladda ned den för tolkning och skapa ett nytt Google Sheet för varje inskick.

  1. Konfigurera Drive File Upload med Name inställt på =New Job Application Form {{ $now.format('d-LL-yyyy, H:mm') }} och Input Data Field Name inställt på New_File_Attachment.
  2. Inloggning krävs: Anslut era googleDriveOAuth2Api-uppgifter i Drive File Upload, Drive File Download och Move File to Temp.
  3. I Drive File Download, ställ in File ID till ={{ $json.id }} och Binary Property Name till New_File_Attachment.
  4. Konfigurera Create Spreadsheet med Title inställt på =New Job Application Google Sheet Form {{ $now.format('d-LL-yyyy, H:mm') }} och Resource inställt på spreadsheet.
  5. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Create Spreadsheet.
  6. Observera parallell körning: Drive File Download skickar utdata både till Create Spreadsheet och No-Op Placeholder parallellt, och därefter går båda in i Combine Streams.

Steg 3: Tolka den uppladdade filen och lägg till i arket

Routa filer baserat på filändelse, tolka innehållet och lägg till alla kandidatrader i det nya kalkylarket.

  1. I Route by File Type, bekräfta att CSV-regeln kontrollerar att ={{ $('Form Submission Trigger').item.json["New File Attachment"].filename }} slutar med .csv, och att XLSX-regeln slutar med .xlsx.
  2. Ställ in Parse CSV File Binary Property Name till New_File_Attachment.
  3. Ställ in Parse XLSX File Operation till xlsx och Binary Property Name till New_File_Attachment.
  4. Säkerställ att både Parse CSV File och Parse XLSX File ansluter till Merge Parsed Data, som sedan fortsätter till Append to Sheet.
  5. I Append to Sheet, ställ in Operation till appendOrUpdate och Document ID till ={{ $('Combine Streams').item.json.spreadsheetId }}.
  6. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Append to Sheet.

Steg 4: Lägg till extra kolumner och läs rader i arket

Flytta den uppladdade filen till temporär lagring, lägg till utvärderingskolumner och läs hela datamängden för AI-poängsättning.

  1. I Move File to Temp, ställ in File ID till ={{ $('Drive File Upload').item.json.id }} och välj er temp-mapp.
  2. I Define Extra Columns, ställ in värdet för columns till Score Explanation, Evaluation Score.
  3. Behåll JavaScript-koden i Build Column Headers som angiven för att skapa header-objekt från $json.columns.
  4. I Append Columns, ställ in Operation till append, Sheet Name till ={{ $('Create Spreadsheet').item.json.sheets[0].properties.sheetId }}, och Document ID till ={{ $('Create Spreadsheet').item.json.spreadsheetId }}.
  5. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Append Columns och Read Sheet Rows.

Steg 5: Konfigurera AI-utvärdering och verktyg

Konfigurera AI-agenten, dess modell och verktygsintegrationer för att poängsätta kandidater och uppdatera arket.

  1. I AI Evaluation Agent, behåll Text inställt på =Google sheets Information: {{ $json.toJsonString() }} och aktivera hasOutputParser.
  2. Öppna OpenAI Chat Model och bekräfta att modellen är gpt-4.1. Inloggning krävs: Anslut era openAiApi-uppgifter i OpenAI Chat Model.
  3. Konfigurera Run Apify Actor med det angivna uttrycket för Custom Body: ={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Input_JSON', `{\n "total_posts": 3,\n "username": "paste here the exact linkedin URL of the candidate as it appears in google sheet"\n}`, 'json') }}. Inloggning krävs: Anslut era apifyApi-uppgifter i Run Apify Actor och Fetch Apify Dataset.
  4. I Fetch Apify Dataset, ställ in Dataset ID till ={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Dataset_ID', `The "defaultDatasetId" received from the Apify actor tool as is`, 'string') }}.
  5. Säkerställ att Structured Output Parser innehåller JSON-schemexemplet för Evaluation_Score, Score_Explanation och Row_Number_to_Match.
  6. I Update Sheet Row, behåll mappningarna i Columns: row_number, Evaluation Score och Score Explanation med $fromAI(...)-uttrycken, och matcha på row_number.
  7. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Update Sheet Row.
  8. AI-undernoderna (Run Apify Actor, Fetch Apify Dataset, Structured Output Parser, Update Sheet Row) är kopplade till AI Evaluation Agent—lägg till inloggningsuppgifter på dessa verktygsnoder och säkerställ att OpenAI Chat Model är länkat som språkmodell.

Steg 6: Formatera och styla arkets utdata

Hämta rubrikraden och applicera styling, filtrering och sortering för en ren utvärderingstabell.

  1. Behåll Prep Formatting ansluten efter AI Evaluation Agent för att fortsätta till flödet för styling.
  2. I Fetch Header Row, ställ in URL till =https://sheets.googleapis.com/v4/spreadsheets/{{ $('Create Spreadsheet').item.json.spreadsheetId }}/values/{{ $('Create Spreadsheet').item.json.sheets[0].properties.title }}!1:1.
  3. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Fetch Header Row och Apply Sheet Styling.
  4. I Apply Sheet Styling, behåll URL inställd på =https://sheets.googleapis.com/v4/spreadsheets/{{ $('Create Spreadsheet').item.json.spreadsheetId }}:batchUpdate och JSON Body som angiven för att ställa in RTL, formatera rubriker, autoanpassa kolumner och sortera efter Evaluation Score.
Tips: Den dynamiska kolumnstorleken i Apply Sheet Styling använder rubrikerna från Fetch Header Row. Säkerställ att rubriknamnen i Define Extra Columns matchar de förväntade kolumnetiketterna.

Steg 7: Lägg till felhantering

Få en notis när arbetsflödet misslyckas så att ni snabbt kan felsöka.

  1. Bekräfta att Trigger Error Handler är ansluten till Send Alert Email.
  2. I Send Alert Email, ställ in Send To till er adress och behåll Subject som Workflow Error Alert.
  3. Behåll Message-texten inställd på =Please check out the workflow in order to be able to configure it. Error accured in {{ $now.format('dd/MM/yyyy HH:mm') }} .
  4. Inloggning krävs: Anslut era gmailOAuth2-uppgifter i Send Alert Email.
⚠️ Vanlig fallgrop: Om behörigheter i Google Sheets saknas kommer Apply Sheet Styling att misslyckas utan tydlig felindikering. Säkerställ att det anslutna Google-kontot har redigeringsåtkomst till det skapade kalkylarket.

Steg 8: Testa och aktivera ert arbetsflöde

Verifiera arbetsflödet från början till slut och aktivera det därefter för riktiga kandidatinlämningar.

  1. Klicka på Execute Workflow och skicka in en test-CSV/XLSX via Form Submission Trigger.
  2. Bekräfta att en ny fil dyker upp i Drive via Drive File Upload, att ett ark skapas av Create Spreadsheet och att rader läggs till av Append to Sheet.
  3. Verifiera att AI Evaluation Agent körs, uppdaterar rader via Update Sheet Row och att arket stylas av Apply Sheet Styling.
  4. Om några fel uppstår, bekräfta att Send Alert Email levererar en notis.
  5. När testerna lyckas, slå på arbetsflödet med Active för produktionsanvändning.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Behörigheter för Google Drive och Google Sheets kan löpa ut eller kräva specifika rättigheter. Om det slutar fungera: kontrollera credential-statusen i n8n och bekräfta först att det kopplade Google-kontot kan skriva till målmappen.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Apify- och OpenAI-prompter driver över tid om du fortsätter ”tweaka” utan en baslinje. Standardprompter i AI-noder är generiska, så spika rubric och tonalitet tidigt – annars kommer du att sitta och redigera output för alltid.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automatiseringen för kandidatrankning?

Cirka 15 minuter om du redan har kontona och nycklarna.

Behöver jag kodkunskaper för att automatisera kandidatrankning?

Nej. Du kopplar främst Google, Apify och OpenAI och klistrar sedan in några ID:n och nycklar.

Är n8n gratis att använda för det här workflowet för kandidatrankning?

Ja. n8n har ett gratis self-hosted-alternativ 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 OpenAI- och Apify-användning (det här flödet ligger ofta runt 0,05 USD per kandidat).

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

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.

Kan jag anpassa det här workflowet för kandidatrankning till ett annat språk eller en annan poängrubric?

Ja, och det är en av de bästa anledningarna att använda n8n för det här. Du kan ändra AI-agentens instruktioner för att byta hebreiska till valfritt språk och justera rubriken (inklusive viktningen 50/25/15/10) utan att röra resten av flödet. Du kan också öka eller minska hur många LinkedIn-inlägg som hämtas genom att uppdatera Apify-actor-inputen. Om du vill skippa LinkedIn helt för vissa roller kan du behålla poängsättningen men ta bort Apify-stegen så att agenten bara utvärderar CV:t och dina egna frågor.

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

Oftast beror det på utgångna Google OAuth-behörigheter eller att Sheetet skapas i en Drive-plats där ditt kopplade konto saknar skrivrättigheter. Koppla om Google Sheets- och Google Drive-credentials i n8n och bekräfta sedan att mapp-ID och delningsinställningar är korrekta. Om det bara fallerar vid uppdateringar: kontrollera att flödet skriver tillbaka till rätt kalkylark och att förväntade rubrikkolumner finns.

Hur många kandidater klarar den här automatiseringen för kandidatrankning?

De flesta team kör batchar på 10–20 kandidater utan problem, och du kan skala högre om du tar hänsyn till Apifys rate limits och dina OpenAI-användningsgränser.

Är den här automatiseringen för kandidatrankning bättre än att använda Zapier eller Make?

Ofta, ja – eftersom det här inte är ett enkelt ”flytta data från A till B”-flöde. Du routar filtyper, loopar rader, berikar via Apify och skriver strukturerad output tillbaka till Sheets, vilket tenderar att bli dyrt eller klumpigt i Zapier. n8n låter dig också self-hosta för obegränsade körningar, vilket spelar roll när ni kör återkommande rekryteringscykler. Samtidigt: om du bara vill kopiera ett formulärsvar till ett Sheet och skicka en notis kan Zapier eller Make gå snabbare. Om du är osäker, prata med en automationsexpert och beskriv er nuvarande process.

När det här väl är på plats slutar shortlisten vara ett skört spreadsheet-projekt och blir ett repeterbart system. Du granskar kandidater – inte formatering.

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