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

Apify + Google Sheets: felfri TikTok-annonslogg

Rickard Andersson Partner, Nodenordic.se

En snabb koll i TikTok Ads Library blir lätt ett dagligt kaninhål. Sedan måste du ändå kopiera länkar, namn och skärmdumpar till ett kalkylark, och du kan aldrig vara helt säker på att du inte loggade samma annons två gånger.

Den här automatiseringen för TikTok-annonseringslogg träffar performance marketers först, men byråägare och tillväxtfokuserade operatörer känner också av den. Resultatet är enkelt: ett felfritt, alltid uppdaterat Google Sheet som bara lägger till faktiskt nya creatives, plus en kort ping i Slack eller Telegram när något förändras.

Nedan ser du exakt hur detta n8n-workflow bevakar biblioteket via Apify, avduplicerar på adId, uppdaterar din logg och håller notiser tysta om det inte finns något värt att titta på.

Så fungerar automatiseringen

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

n8n Workflow Template: Apify + Google Sheets: felfri TikTok-annonslogg

Problemet: konkurrentbevakning av annonser blir rörigt slitjobb

Konkurrentbevakning låter enkelt tills du faktiskt gör det i en vecka. Du söker i TikTok Ads Library, öppnar en massa creatives, kopierar detaljer till ett ark och lovar dig själv att du ska “städa upp det senare”. Senare kommer sällan. Loggen blir inkonsekvent (olika namngivning, saknade fält, trasiga länkar), och dubletter smyger sig in eftersom du går på minnet. Värsta delen: du lägger din bästa tanketid på att samla data istället för att lära dig av den.

Friktionen byggs på. Här är var det faller isär.

  • Du dubbelkollar annonser du redan sett eftersom det inte finns något pålitligt “redan loggat”-system.
  • Manuell copy-paste skapar småfel som förstör analysen senare (fel annonsör, saknade ID:n, datum som inte matchar).
  • Ditt ark växer, men det förblir inte användbart, så ingen litar på det när det är dags att fatta beslut.
  • Notiser blir brus när du delar uppdateringar, så teamet slutar bry sig.

Lösningen: schemalagd scraping + avduplicering + korrekt loggning

Det här workflowet körs enligt schema och söker i TikTok Ads Library på samma sätt som du skulle göra, men utan manuellt klickande. n8n bygger en förfrågan (land, datumintervall, annonsörs-ID:n eller nyckelordssökningar), sedan scrapar Apify matchande creatives och returnerar strukturerad data. Därefter formaterar workflowet varje resultat för ditt kalkylark, läser befintliga adId-värden som redan loggats och filtrerar bort allt du sett tidigare. Endast nya creatives skrivs till Google Sheets, där adId används som matchnyckel så att omkörningar är säkra. Till sist, om nya annonser finns, får du ett kort Slack- eller Telegram-meddelande med antal och en länk till arket. Om inget ändrats förblir det tyst.

Workflowet startar med en Scheduled Automation Trigger och en enkel nod för “input options” där du definierar vad som ska spåras. Apify hämtar och returnerar annonserna, sedan jämför n8n deras ID:n mot ditt ark innan rader upsertas och en lätt notis skickas.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att du följer 8 konkurrenter och gör en snabb koll varje morgon. Om du lägger cirka 10 minuter per konkurrent på att öppna creatives och logga detaljer blir det ungefär 80 minuter per dag, plus den oundvikliga “loggade jag redan den här?”-rundgången. Med det här workflowet blir den dagliga rutinen: ställ in en gång, låt den schemalagda körningen scrape:a och avduplicera, och kika sedan på ett Slack-/Telegram-meddelande som säger “6 nya annonser” och öppna arket när det är värt det. Den mänskliga tiden sjunker till kanske 5 minuter per dag.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Apify för att scrape:a resultat från TikTok Ads Library
  • Google Sheets för att lagra din felfria konkurrentlogg
  • Slack eller Telegram för notiser om “nya annonser hittade”
  • Apify API-token (hämta den i Apify Console-inställningarna)

Kunskapsnivå: Medel. Du kopplar konton, klistrar in en API-token och bekräftar att dina Sheet-kolumner matchar workflowets mapping.

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

Så fungerar det

En schemalagd körning drar igång allt. Du väljer en frekvens (varje morgon är vanligt), och workflowet hämtar som standard “igår till idag” så att du alltid skannar det senaste fönstret.

Dina sökparametrar blir korrekt formaterade. n8n sparar dina inputs (land, nyckelord, annonsörens business-ID:n, valfri resultatgräns) och konverterar sedan datum till Unix-tidsstämplar så att förfrågan beter sig likadant varje gång.

Apify hämtar annonsresultaten, sedan filtrerar n8n. Workflowet plockar ut nyckelfält som adId, videolänkar, omslagsbild, annonsörsdetaljer och användarnamn. Därefter läser det adId-kolumnen från Google Sheets, slår ihop den “befintliga ID-listan” med den aktuella körningen och behåller bara annonser som faktiskt är nya. Det förhindrar även dubletter inom samma scrape-batch.

Google Sheets får en upsert, inte en rörig append. Nya creatives läggs till eller uppdateras med adId som matchande kolumn, och omslagsbilder kan visas via en =IMAGE()-formel så att din logg blir bläddringsbar, inte bara “datalagring”.

Du kan enkelt ändra sök-inputs (land, annonsörs-ID:n eller nyckelordslogik) så att det matchar hur du bevakar konkurrenter. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera den schemalagda automationstriggern

Ställ in schemat som startar automationen och matar in standardindata i arbetsflödet.

  1. Öppna Scheduled Automation Trigger och konfigurera schemaregeln som matchar er övervakningskadens.
  2. Verifiera att Scheduled Automation Trigger är kopplad till Define Input Options enligt arbetsflödets kopplingar.

Steg 2: Definiera indataparametrar och datumkonvertering

Ange filtren för annonssökningen och konvertera läsbara datum till Unix-tidsstämplar för API-anropet.

  1. I Define Input Options, ställ in Ad target country till all.
  2. Ställ in Ad published date From (DD/MM/YYYY) till {{ $now.minus({ days: 1 }).toFormat('dd/MM/yyyy') }} och Ad published To (DD/MM/YYYY) till {{ $now.toFormat('dd/MM/yyyy') }}.
  3. Uppdatera adv_biz_ids till ert annonsör-ID i formatet [YOUR_ID], och fyll valfritt i Advertiser name or keyword eller Ad limit.
  4. Bekräfta att Transform Dates to Unix kommer efter Define Input Options för att generera start_time_unix och end_time_unix.

⚠️ Vanlig fallgrop: Om ert datumformat inte matchar DD/MM/YYYY kommer Transform Dates to Unix att kasta ett fel och stoppa körningen.

Steg 3: Bygg och kör Apify-förfrågan

Skapa den anpassade payloaden för TikTok Ads-aktorn och kör Apify-jobbet.

  1. Öppna Assemble Apify Payload och behåll logiken som bygger URL:en och JSON-body för actor-förfrågan.
  2. I Retrieve TikTok Ads, ställ in Operation till Run actor and get dataset och mappa Custom Body till {{ $json.customBody }}.
  3. Inloggning krävs: Anslut era apifyApi-uppgifter i Retrieve TikTok Ads.

Tips: Om ni använder Ad limit i Define Input Options injicerar Assemble Apify Payload automatiskt resultsLimit i JSON-body.

Steg 4: Förbered, avduplicera och identifiera nya annonser

Normalisera svaret, ladda befintliga ID:n från Google Sheets och filtrera fram enbart nya creatives.

  1. Granska Format Rows for Sheets för att säkerställa att videoUrl, coverImageUrl och tiktokUsername extraheras säkert för varje annons.
  2. Format Rows for Sheets skickar utdata till både Load Existing IDs och Merge Prior IDs parallellt.
  3. I Load Existing IDs, ställ in Document ID till [YOUR_ID] och Range till K:K för den befintliga adId-kolumnen.
  4. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Load Existing IDs.
  5. Bekräfta att Gather ID Catalog matar in i Merge Prior IDs, och att Filter Fresh Creatives sedan tar bort annonser som redan finns i Sheets.

Tips: Det finns flera code-noder (totalt 6). Låt dem vara som de är för att undvika datatypsmismatchar vid avduplicering.

Steg 5: Skriv in nya annonser och skicka notifieringar

Infoga eller uppdatera nya annonser i Google Sheets och avisera era kanaler om några hittades.

  1. Filter Fresh Creatives skickar utdata till både Upsert Sheet Rows och Tally New Ads parallellt.
  2. I Upsert Sheet Rows, bekräfta att Operation är appendOrUpdate och att kolumnmappningarna använder uttryck som {{ $json.adId }} och {{ $json.coverImageUrl ? `=IMAGE("${$json.coverImageUrl}"; 1)` : '' }}.
  3. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Upsert Sheet Rows.
  4. Tally New Ads matar in i Check New Ads med ett numeriskt villkor {{ $json.newCount }} > 0.
  5. Check New Ads skickar utdata till både Send Telegram Update och Post Slack Update parallellt.
  6. Inloggning krävs: Anslut era telegramApi-uppgifter i Send Telegram Update och ställ in Chat ID till [YOUR_ID].
  7. Inloggning krävs: Anslut era Slack-uppgifter i Post Slack Update och välj mål-Channel.
  8. Behåll meddelandeinnehållet i båda notifieringsnoderna som Hello! {{$json.newCount}} TikTok ads were found today. Review the list in your spreadsheet..

⚠️ Vanlig fallgrop: Post Slack Update har inga inloggningsuppgifter konfigurerade i workflow-JSON:en—se till att lägga till dem, annars misslyckas Slack-meddelandena.

Steg 6: Testa och aktivera ert arbetsflöde

Kör ett manuellt test för att validera flödet och aktivera sedan schemat för produktion.

  1. Klicka på Execute Workflow för att köra hela flödet från Scheduled Automation Trigger och framåt.
  2. Bekräfta att nya rader visas i Google Sheets via Upsert Sheet Rows, och att Tally New Ads skickar ut ett newCount-värde.
  3. Om newCount är större än noll, verifiera att både Send Telegram Update och Post Slack Update levererar meddelanden parallellt.
  4. När allt är verifierat, växla arbetsflödet till Active så att Scheduled Automation Trigger kan köras enligt sitt schema.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Apify-inloggningar kan löpa ut eller så kan aktorn kräva rätt åtkomst. Om det skapar fel, kontrollera först din Apify-token och aktörens behörigheter i Apify Console.
  • Om du använder Wait-noder eller extern rendering varierar processing-tiderna. Öka väntetiden om nedströmsnoder misslyckas på grund av tomma svar.
  • Google Sheets-upsert beror på din matchkolumn. Om adId inte ligger i förväntad kolumn/område (eller om rubrikerna i arket har ändrats) smyger dubletter in även om workflowet “körde lyckat”.

Vanliga frågor

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

Cirka 30–60 minuter om dina Apify-, Google Sheets- och Slack/Telegram-konton är klara.

Behöver jag kunna koda för att automatisera loggning av TikTok-annonser?

Nej. Du kopplar mest konton och klistrar in en Apify-token. Den enda “tekniska” delen är att säkerställa att ditt Google Sheet har de förväntade kolumnerna.

Är n8n gratis att använda för det här workflowet för TikTok-annonseringslogg?

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 Apify-kostnader för användning av TikTok Ads Scraper-aktorn.

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

Kan jag anpassa det här workflowet för TikTok-annonseringslogg för att spåra flera annonsörer samtidigt?

Ja, och det är en vanlig uppgradering. Du kan göra annonsörens business-ID:n (adv_biz_ids) i noden “Define Input Options” till en lista och sedan loopa över den så att varje körning kontrollerar flera konkurrenter. Ett annat alternativ är att byta från annonsörs-ID:n till nyckelordsbaserade sökningar genom att ändra samma input-nod och sedan låta logiken i “Assemble Apify Payload” bygga rätt URL. De flesta justerar också Slack-/Telegram-meddelandet så att det inkluderar datumintervallet eller annonsörsetiketten.

Varför misslyckas min Apify-anslutning i det här workflowet?

Oftast beror det på en utgången eller felaktig Apify API-token i n8n. Skapa en ny token i Apify, uppdatera inloggningen som används av “Retrieve TikTok Ads” och testa en manuell körning. Om det fortfarande misslyckas, kontrollera att din Apify-plan/aktörsåtkomst inkluderar TikTok Ads Scraper-aktorn och håll koll på rate limits om du scrapar stora resultatuppsättningar.

Hur många annonser kan den här automatiseringen för TikTok-annonseringslogg hantera?

Många, så länge din Apify-körning och din n8n-plan hänger med.

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

Ofta, ja, eftersom det här inte är ett enkelt flöde av typen “om ny rad, skicka meddelande”. Du behöver säkra omkörningar, avduplicering och en upsert-strategi baserad på adId, plus lite lätt databearbetning innan du skriver till Sheets. n8n hanterar branching och kodsteg utan att varje extra filter blir ännu en betald task. Zapier eller Make kan fortfarande fungera om du redan arbetar där, men du kommer sannolikt lägga mer tid på att hantera edge cases som dublettlogik. Om du vill ha hjälp att välja, prata med en automationsexpert och ta med din exakta volym och dina rapporteringsbehov.

Du får en konkurrentlogg som förblir pålitlig, även när du slutar tänka på den. Sätt schemat, ha länken till arket nära till hands och använd tiden du sparade till att faktiskt fatta bättre kreativa beslut.

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

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal