Tidsrapportering faller sönder i de små ögonblicken. Du kommer in, blir indragen i ett samtal och plötsligt blir “jag loggar det sen” till en veckovis stressjakt i kalendrar och meddelanden.
Det här är exakt vad operatörer och byråägare klagar på, och det drabbar frilansare också: iPhone Sheets logging som är konsekvent, snabb och inte beroende av ditt minne. Målet är enkelt. Dina in- och utstämplingar hamnar i Google Sheets automatiskt, så att dina timmar blir korrekta varje vecka.
Det här flödet använder iPhone-genvägar för att trigga en förfrågan, n8n för att fånga upp och formatera den, och Google Sheets för att lagra det strukturerat. Du får se hur det körs, vad du behöver och var folk oftast fastnar.
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: iPhone-genvägar + Google Sheets: rätt loggade timmar
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook"]
n1@{ icon: "mdi:cog", form: "rounded", label: "Google Drive", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Create Worksheet", pos: "b", h: 48 }
n3["<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/>Return if Null"]
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Doesn't exist?", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Logging Details", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Create Log", pos: "b", h: 48 }
n0 --> n1
n1 --> n3
n4 --> n2
n4 --> n5
n3 --> n4
n2 --> n5
n5 --> n6
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 n4 decision
class n2,n6 database
class n0 api
class n3 code
classDef customIcon fill:none,stroke:none
class n0,n3 customIcon
Utmaningen: tidsloggar som försvinner
Manuell tidsrapportering låter enkelt tills du gör det varje dag. Du stämplar in mentalt, men glömmer att registrera det. Du stämplar ut sent och försöker sedan minnas om du gick 17:30 eller “närmare 18.” Och när du väl missar en registrering blir resten av veckan rörig eftersom du hela tiden tvivlar på dig själv. Den verkliga kostnaden är inte bara tiden du lägger på att rätta till. Det är den mentala belastningen, den obekväma känslan av “jag måste fylla i i efterhand”, och att ditt ark slutar vara pålitligt.
Det bygger upp snabbt. Här är var det brukar fallera i verkligheten.
- Du tappar cirka 10 minuter per dag på att försöka minnas exakta start- och sluttider.
- En missad utstämpling blir ofta en slarvig uppskattning, som sedan påverkar totalsummor och löneberäkningar.
- Att kopiera anteckningar från mobilen till ett kalkylark skapar stavfel och inkonsekventa format.
- När Google-arket inte är skapat än (eller någon har bytt namn på det) stannar loggningen helt tills du fixar det.
Lösningen: platsutlösta in- och utstämplingar loggas till Sheets
Den här automatiseringen gör “jag borde logga det” till något som sker i bakgrunden. När du går in i eller lämnar en specifik plats kör din iPhone en genväg som skickar en enkel förfrågan till n8n. n8n tar emot den via en webhook, avgör om det är en instämpling eller utstämpling och förbereder en korrekt formaterad rad för din logg. Om Google-arket inte finns ännu skapar flödet ett åt dig och fortsätter sedan som vanligt. Slutresultatet är en prydlig logg i Google Sheets som du kan lita på för veckototaler, fakturering eller närvarorapportering.
Flödet startar med en inkommande webhook från dina iPhone-genvägar. Därefter söker det upp kalkylarket i Google Drive, skapar det vid behov, formaterar fälten och lägger till en ny rad i Google Sheets. Inga efterhandsifyllnader. Inget “jag gör det sen.”
Vad som förändras: före vs. efter
| Det här elimineras | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du arbetar 5 dagar i veckan och loggar två händelser per dag (instämpling och utstämpling). Manuellt är det oftast cirka 2 minuter per registrering när du väl har öppnat arket, hittat rätt rad och skrivit in tiden, alltså runt 20 minuter i veckan. Men den verkliga tidsförlusten är efterhandsifyllnad: bara en glömd dag kan ta ytterligare 20 minuter av letande. Med det här flödet är “arbetet” i princip noll efter uppsättning, och arket hålls korrekt automatiskt.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Självhosting-alternativ om du föredrar det (Hostinger fungerar bra)
- iPhone-genvägar för att trigga instämpling och utstämpling.
- Google Drive för att hitta eller skapa kalkylarksfilen.
- Google Sheets för att lagra din tidslogg i rader.
Kunskapsnivå: Nybörjare. Du kopierar en webhook-URL, kopplar Google och redigerar två iPhone-genvägar.
Behöver du hjälp att implementera detta? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Flödet i arbetsflödet
Din iPhone skickar ögonblicket. Du skapar två genvägar, en för “Instämpling” och en för “Utstämpling”, som triggas av att du går in i eller lämnar en plats. Varje genväg skickar en snabb webbförfrågan till n8n med en header som talar om riktningen.
n8n tar emot och letar efter din logg. Webhooken fångar upp förfrågan och kontrollerar sedan Google Drive för att hitta rätt kalkylark. Om sökningen inte hittar något känner flödet av det och skickar vidare till en “saknad fil”-väg.
Arket skapas om det inte finns. Vid behov skapar n8n kalkylarket i Google Sheets och fortsätter direkt. Ärligt talat är det här delen som sparar dig från den klassiska huvudvärken “det slutade fungera för att någon bytte namn på en fil”.
En korrekt formaterad rad läggs till. n8n förbereder en konsekvent uppsättning fält (tid, status för in/utstämpling och allt annat du väljer att lägga till senare) och lägger till raden i Google Sheets. Det är din källa till sanning.
Du kan enkelt ändra vilka fält som lagras för att inkludera anteckningar, jobbkoder eller kundnamn utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera webhook-triggern
Skapa inkommande endpoint som tar emot närvarohändelser och startar arbetsflödet.
- Lägg till noden Incoming Webhook Trigger och ställ in Path till
time-track. - Välj den HTTP-metod ni skickar från ert källsystem (behåll standard om er klient använder POST).
- Spara arbetsflödet för att generera produktions-URL:en för webhooken.
Steg 2: anslut Google Drive och hitta kalkylarket
Använd Google Drive för att hitta den befintliga kalkylarksfilen som ska lagra närvarologgar.
- Lägg till noden Drive File Lookup efter Incoming Webhook Trigger.
- Ställ in Resource till
fileFolder, aktivera Return All och ställ in Query String tillWorkTimeTracking. - Autentiseringsuppgifter krävs: anslut era googleDriveOAuth2Api-uppgifter.
Drive File Lookup skickar utdata till Detect Empty Result för att avgöra om en matchande fil hittades.
Steg 3: hantera logik för saknad fil och förbered loggfält
Skapa kalkylarket om det inte finns, och forma sedan den data som ska läggas till.
- I Detect Empty Result, behåll JavaScript-koden som den är för att beräkna tom-flaggan:
return [{json: {empty: items.length == 1 && Object.keys(items[0].json).length == 0}}]; - I Missing File Check, säkerställ att villkoret använder
={{$json["empty"]}}med den booleska operationen satt tilltrue. - Koppla true-utgången från Missing File Check till Generate Spreadsheet, och false-utgången direkt till Prepare Log Fields.
- I Generate Spreadsheet, ställ in Title till
WorkTimeTrackingoch säkerställ att ett ark med namnetWorklogskapas. - Autentiseringsuppgifter krävs: anslut era googleSheetsOAuth2Api-uppgifter för Generate Spreadsheet.
- I Prepare Log Fields, ställ in Mode till
rawoch JSON Output till={ "Date": "{{ $now.format('yyyy-MM-dd') }}", "Time": "{{ $now.format('hh:mm') }}", "Direction":"Check-In" }.
Generate Spreadsheet flödar vidare till Prepare Log Fields för att fortsätta processen efter att filen har skapats.
Steg 4: lägg till närvarodata i Google Sheets
Mappa de förberedda fälten och webhook-headern till en ny rad i arket Worklog.
- Lägg till noden Append Log Row efter Prepare Log Fields med Operation satt till
append. - Ställ in Document ID till
={{ $('Drive File Lookup').item.json.id }}och Sheet Name tillWorklog. - Mappa kolumner med uttryck: Date →
={{ $json.Date }}, Time →={{ $json.Time }}, Direction →={{ $('Incoming Webhook Trigger').item.json.headers.direction ? $('Incoming Webhook Trigger').item.json.headers.direction : ""}}. - Autentiseringsuppgifter krävs: anslut era googleSheetsOAuth2Api-uppgifter.
⚠️ Vanlig fallgrop: om webhook-avsändaren inte inkluderar headern direction kommer kolumnen Direction att läggas till som en tom sträng. Säkerställ att er klient sätter headern om ni vill ha värden som “Check-In/Check-Out”.
Steg 5: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera att kalkylarket skapas (om det saknas) och att en ny loggrad läggs till korrekt.
- Klicka på Execute Workflow och skicka en request till Incoming Webhook Trigger-URL:en med en
direction-header (t.ex.Check-In). - Bekräfta att Drive File Lookup hittar (eller skapar via Generate Spreadsheet) filen
WorkTimeTracking. - Verifiera att Append Log Row skriver en ny rad i arket
Worklogmed värden för Date, Time och Direction. - När testet lyckas, växla arbetsflödet till Active för användning i produktion.
Se upp för
- Google Drive-inloggning kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först status för inloggningen i n8n och din åtkomst i Google-kontot.
- Automatiseringar i iPhone-genvägar kan blockeras av fokuslägen eller saknade platsbehörigheter. Om händelser slutar trigga, kontrollera Platstjänster och inställningar för genvägsautomatisering på telefonen.
- Webhook-URL:er ändras om du byter miljö eller bygger om n8n. Om du kör självhostat och uppdaterar domäner kan du behöva klistra in den nya webhook-URL:en i båda genvägarna.
Vanliga frågor
Cirka 5 minuter om Google redan är anslutet.
Ja. Du kopplar Google, kopierar en webhook-URL och klistrar in den i två iPhone-genvägar.
Ja. n8n har ett gratis självhostat alternativ och en gratis testperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver även räkna med eventuella Google Workspace-kostnader om du använder ett betalt Google-konto, men själva flödet kräver inga betalda API:er.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och kör n8n bra. Självhosting ger obegränsade körningar men kräver grundläggande serverhantering.
Du kan anpassa vad som sparas genom att redigera steget “Prepare Log Fields” i n8n. Vanliga justeringar är att lägga till en kolumn “Projekt”, spara iPhonens plats-etikett eller fånga en snabb anteckning som du skickar in från genvägen. Om du vill ha separata ark per person, justera uppslagningen i Google Drive så att den söker efter ett filnamn som innehåller användarnamnet, och låt sedan vägen “Generate Spreadsheet” skapa det automatiskt när det saknas.
Oftast beror det på utgångna Google-inloggningar i n8n eller att fel Google-konto är anslutet. Anslut Google Drive/Sheets på nytt i n8n och kör sedan en test-instämpling från din iPhone. Om arket flyttades till en delad enhet kan behörigheter ändras utan att det märks, så kontrollera att kontot du anslöt faktiskt kan skapa och redigera filer där. Håll också koll på filnamnsändringar: Drive-uppslagningen kan missa den om du bytt namn och inte uppdaterat det förväntade filmönstret.
För de flesta små team är det i praktiken “så många in- och utstämplingar som ni kan generera.” n8n Cloud Starter har en månatlig gräns för körningar, medan självhosting inte har någon inbyggd körningsgräns (det beror på din server). Praktiskt är varje instämpling en körning, så även 10 personer som stämplar in och ut dagligen blir bara några hundra körningar i månaden.
Ofta, ja, om du bryr dig om driftsäkerhet och kontroll. Webhooks är en förstaklassfunktion i n8n, och att skapa kalkylarket när det saknas är mycket enklare när du kan förgrena logik utan att betala för extra steg. Självhosting är också viktigt om du vill ha obegränsade körningar och förutsägbara kostnader. Zapier eller Make kan fortfarande fungera om du gör ett väldigt grundläggande “webhook till Sheets”-flöde och du kan acceptera att arket fallerar när det inte hittar filen. Om du är osäker, prata med en automatiseringsexpert och få en snabb rekommendation.
När det här väl rullar slutar dina timmar att vara ett veckovis pussel. Flödet loggar de tråkiga bitarna så att du kan fokusera på arbetet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.