{"id":13176,"date":"2026-09-28T18:25:00","date_gmt":"2026-09-28T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13176"},"modified":"2026-09-25T15:07:51","modified_gmt":"2026-09-25T13:07:51","slug":"tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/","title":{"rendered":"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag"},"content":{"rendered":"<p>Liczba w raporcie zmienia si\u0119 we wtorek. Kontener opublikowano w tym miesi\u0105cu cztery razy, a lista wersji m\u00f3wi, kto to zrobi\u0142 i kiedy &#8211; i zupe\u0142nie nic o tym, co poruszy\u0142o si\u0119 w \u015brodku.<\/p>\n<p>Otworzy\u0107 i przeczyta\u0107 cztery wersje da si\u0119. Czterdziestu ju\u017c nie, a czterdzie\u015bci to liczba zwyczajowa w chwili, gdy kto\u015b to zauwa\u017cy. Poni\u017cej droga, kt\u00f3ra najpierw znajduje wersj\u0119, a dopiero potem por\u00f3wnuje dwie.<\/p>\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/containerversion-finden-pl.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\"\n     alt=\"Osiem wersji kontenera z dat\u0105, osob\u0105 publikuj\u0105c\u0105 i sum\u0105 kontroln\u0105 jednego tagu, z wyr\u00f3\u017cnionymi dwoma wierszami, w kt\u00f3rych ta suma si\u0119 zmieni\u0142a\"><figcaption>Suma kontrolna jednego elementu w o\u015bmiu wersjach. Dwa wiersze r\u00f3\u017cni\u0105 si\u0119 od poprzedzaj\u0105cego i tylko te dwa warto otworzy\u0107.<\/figcaption><\/figure>\n<h2>Co pokazuje lista wersji, a co ukrywa<\/h2>\n<p>Ka\u017cda publikacja tworzy wersj\u0119, a ta wersja jest pe\u0142n\u0105, niezmienn\u0105 kopi\u0105 kontenera z tamtej chwili. Lista tych wersji pokazuje cztery rzeczy: numer, nazw\u0119, kto opublikowa\u0142 i kiedy.<\/p>\n<p>Nie pokazuje zawarto\u015bci. Dwie wersje mog\u0105 r\u00f3\u017cni\u0107 si\u0119 jednym znakiem w jednej zmiennej, a lista i tak wygl\u0105da tak samo. Liczba zmian obok wersji pomaga troch\u0119, a myli wiele, bo liczy zmiany w obszarze roboczym, a nie r\u00f3\u017cnic\u0119 wobec wersji poprzedniej &#8211; obszar roboczy, w kt\u00f3rym co\u015b zmieniono i cofni\u0119to, podnosi t\u0119 liczb\u0119, niczego nie zmieniaj\u0105c.<\/p>\n<p>Jedynym polem, kt\u00f3re odpowiedzia\u0142oby na pytanie wprost, s\u0105 notatki wersji. To dowolny tekst, pisany przy publikacji, i w niemal ka\u017cdym istniej\u0105cym kontenerze pusty. Wype\u0142nianie go jest najta\u0144sz\u0105 mo\u017cliw\u0105 popraw\u0105 ca\u0142ego tego problemu &#8211; i pomaga dopiero od teraz.<\/p>\n<h2>Pobranie wersji przez API<\/h2>\n<p>API Tag Managera zwraca te same wersje, kt\u00f3re pokazuje interfejs, oraz pe\u0142n\u0105 zawarto\u015b\u0107 ka\u017cdej z nich. Wystarczy dost\u0119p do odczytu.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code># Zakres: https:\/\/www.googleapis.com\/auth\/tagmanager.readonly\n\nBASIS=\"https:\/\/tagmanager.googleapis.com\/tagmanager\/v2\"\nPFAD=\"accounts\/6000000001\/containers\/7000000002\"\n\n# 1 lista wersji - krotka, bez zawartosci\ncurl -s -H \"Authorization: Bearer $TOKEN\" \\\n  \"$BASIS\/$PFAD\/version_headers\" | jq -r \\\n  '.containerVersionHeader[] | [.containerVersionId, .name] | @tsv'\n\n# 2 jedna pelna wersja\ncurl -s -H \"Authorization: Bearer $TOKEN\" \\\n  \"$BASIS\/$PFAD\/versions\/41\" &gt; version-41.json<\/code><\/pre>\n<p>Dwie rzeczy o pierwszym wywo\u0142aniu warto wiedzie\u0107. Zwraca nag\u0142\u00f3wki zamiast zawarto\u015bci, co czyni je tanim i jest w\u0142a\u015bciw\u0105 drog\u0105 do wyliczenia. I jest stronicowane: kontener z wieloma wersjami zwraca <code>nextPageToken<\/code>, a skrypt go pomijaj\u0105cy po cichu pracuje wy\u0142\u0105cznie z najnowsz\u0105 stron\u0105.<\/p>\n<p>Drugie wywo\u0142anie jest tym drogim, bo zwraca ca\u0142y kontener. To pow\u00f3d istnienia nast\u0119pnego rozdzia\u0142u: pobranie czterdziestu pe\u0142nych wersji, by por\u00f3wna\u0107 jeden tag, to du\u017co danych na jedno pytanie.<\/p>\n<h2>Suma kontrolna wskazuj\u0105ca zmian\u0119<\/h2>\n<p>Ka\u017cdy element kontenera niesie pole <code>fingerprint<\/code>, a zmienia si\u0119 ono, gdy tylko element zostanie zmodyfikowany. Por\u00f3wnanie sumy kontrolnej jednego tagu w kolejnych wersjach odpowiada wi\u0119c na pytanie bez por\u00f3wnywania czegokolwiek innego.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>import json, glob\n\nGESUCHT = \"25\"   # tagId: GA4 - Event - purchase\n\nvorher = None\nfor datei in sorted(glob.glob(\"version-*.json\"),\n                    key=lambda d: int(d.split(\"-\")[1].split(\".\")[0])):\n    daten = json.load(open(datei))\n    tags  = {t[\"tagId\"]: t for t in daten.get(\"tag\", [])}\n    tag   = tags.get(GESUCHT)\n\n    if tag is None:\n        print(f\"{datei:16s} nie istnieje\")\n    else:\n        marke = tag[\"fingerprint\"]\n        hinweis = \"ZMIENIONY\" if vorher and marke != vorher else \"\"\n        print(f\"{datei:16s} {marke}  {hinweis}\")\n        vorher = marke<\/code><\/pre>\n<p>Wynikiem jest jedna linia na wersj\u0119, a te ciekawe zg\u0142aszaj\u0105 si\u0119 same. Tag nietkni\u0119ty przez trzydzie\u015bci wersji, a potem raz zmieniony, daje dok\u0142adnie jeden oznaczony wiersz &#8211; i ten wiersz jest odpowiedzi\u0105.<\/p>\n<p>Dwie w\u0142a\u015bciwo\u015bci sumy kontrolnej zas\u0142uguj\u0105 na uwag\u0119. Jest nieprzejrzysta &#8211; m\u00f3wi, \u017ce co\u015b si\u0119 zmieni\u0142o, a nie co &#8211; i do tego kroku to wystarcza. I zmienia si\u0119 przy ka\u017cdej edycji, \u0142\u0105cznie ze zmian\u0105 nazwy: przemianowany tag pojawia si\u0119 jako zmieniony, cho\u0107 zachowuje si\u0119 tak samo. Zestawianie po <code>tagId<\/code> zamiast po nazwie tego nie zmienia, ale prze\u017cywa t\u0119 zmian\u0119 nazwy, kt\u00f3ra w og\u00f3le utrudni\u0142a odnalezienie elementu.<\/p>\n<h2>Znale\u017a\u0107 wersj\u0119, potem por\u00f3wna\u0107 dwie<\/h2>\n<p>Gdy wersja jest znana, por\u00f3wnanie odbywa si\u0119 mi\u0119dzy dwoma plikami, a nie czterdziestoma &#8211; i op\u0142aca si\u0119 na kopii ujednoliconej, a nie na surowym eksporcie.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code># tylko szukany tag z obu wersji, posortowany\nfor v in 43 44; do\n  jq -S --arg n \"GA4 - Event - purchase\" \\\n    '.tag[] | select(.name == $n)' version-$v.json &gt; tag-$v.json\ndone\n\ndiff -u tag-43.json tag-44.json<\/code><\/pre>\n<p>To <code>-S<\/code> czyni wynik czytelnym. Bez niego klucze JSON wracaj\u0105 w kolejno\u015bci wytworzonej przez API, a por\u00f3wnanie dw\u00f3ch obiekt\u00f3w o tym samym znaczeniu potrafi mie\u0107 kilkadziesi\u0105t linii. Posortowanie kluczy usuwa to ca\u0142kowicie, a zostaje w\u0142a\u015bciwa zmiana.<\/p>\n<p>Trzy pola warto w por\u00f3wnaniu pomin\u0105\u0107, bo zmieniaj\u0105 si\u0119 same z siebie: <code>fingerprint<\/code>, s\u0142u\u017c\u0105cy tutaj do znalezienia wersji, a nie do jej opisu, oraz ka\u017cde pole znacznika czasu albo \u015bcie\u017cki nios\u0105ce numer wersji. Wszystko inne, co si\u0119 r\u00f3\u017cni, jest r\u00f3\u017cnic\u0105 prawdziw\u0105.<\/p>\n<h2>Przydzia\u0142 zapyta\u0144 i kopia lokalna<\/h2>\n<p>API Tag Managera ma ograniczenia na minut\u0119 i na dob\u0119, a p\u0119tla po czterdziestu pe\u0142nych wersjach szybko na nie wpada. Niepowodzeniem jest odpowied\u017a 429, a skrypt bez przerwy zamienia jedno badanie w API zablokowane do ko\u0144ca godziny.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>for v in $(cat versionen.txt); do\n  [ -f \"version-$v.json\" ] &amp;&amp; continue          # juz jest\n  curl -s -H \"Authorization: Bearer $TOKEN\" \\\n    \"$BASIS\/$PFAD\/versions\/$v\" &gt; \"version-$v.json\"\n  sleep 2\ndone<\/code><\/pre>\n<p>Pomini\u0119cie istniej\u0105cego pliku to wa\u017cna linia. Wersje s\u0105 niezmienne, wi\u0119c raz pobranej wersji nigdy nie trzeba pobiera\u0107 ponownie &#8211; a katalog z nimi staje si\u0119 archiwum odpowiadaj\u0105cym na nast\u0119pne pytanie bez dotykania API w og\u00f3le.<\/p>\n<p>To archiwum warto zak\u0142ada\u0107 celowo, a nie ubocznie. Cotygodniowe zadanie pobieraj\u0105ce najnowsze wersje nic nie kosztuje &#8211; a dzi\u0119ki temu historia jest dost\u0119pna tak\u017ce dla kontenera, do kt\u00f3rego kto\u015b p\u00f3\u017aniej traci dost\u0119p.<\/p>\n<h2>Pytanie, na kt\u00f3re API nie odpowiada<\/h2>\n<p>Trzy rzeczy pozostaj\u0105 poza zasi\u0119giem, a wiedza o tym, kt\u00f3re to, oszcz\u0119dza d\u0142ugiego szukania czego\u015b, czego nie ma.<\/p>\n<p>Pierwsz\u0105 jest to, kto zmieni\u0142 okre\u015blony element. Wersja zapisuje, kto j\u0105 opublikowa\u0142, a publikacja mo\u017ce zawiera\u0107 prac\u0119 kilku os\u00f3b z kilku tygodni. Autorstwa na poziomie elementu API nie ma, a interfejs r\u00f3wnie\u017c nie.<\/p>\n<p>Drug\u0105 jest wszystko, co nigdy nie sta\u0142o si\u0119 wersj\u0105. Zmiana wprowadzona w obszarze roboczym i cofni\u0119ta przed publikacj\u0105 nie zostawia \u015bladu, podobnie jak skasowany obszar roboczy. Historia jest histori\u0105 publikacji, a nie edycji.<\/p>\n<p>Trzeci\u0105 jest skutek. Dwie wersje mog\u0105 r\u00f3\u017cni\u0107 si\u0119 warunkiem wyzwalania spe\u0142niaj\u0105cym si\u0119 o dziesi\u0119\u0107 procent cz\u0119\u015bciej, a nic w kontenerze tego nie m\u00f3wi &#8211; r\u00f3\u017cnic\u0105 jest jedna linia konfiguracji, a jej nast\u0119pstwo stoi w danych. Dlatego ca\u0142a ta procedura jest pierwsz\u0105 po\u0142ow\u0105 badania: daje chwil\u0119 i zmian\u0119, a drug\u0105 po\u0142ow\u0105 jest sprawdzenie, czy liczby r\u00f3wnie\u017c poruszy\u0142y si\u0119 w tej chwili.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy por\u00f3wnanie sumy kontrolnej wykrywa tak\u017ce zmian\u0119 triggera albo zmiennej, z kt\u00f3rych korzysta tag?<\/h3>\n<p>Nie, i to jest najwa\u017cniejsza luka tej procedury. Pole fingerprint tagu zmienia si\u0119 tylko wtedy, gdy edytowany jest sam tag. Tag odwo\u0142uje si\u0119 do swoich trigger\u00f3w przez ich identyfikatory, a do zmiennych przez ich nazwy w podw\u00f3jnych nawiasach klamrowych. Je\u015bli kto\u015b zmieni warunek wyzwalania triggera albo warto\u015b\u0107 zmiennej, tag pozostaje identyczny znak po znaku, a wraz z nim jego suma kontrolna, cho\u0107 zachowuje si\u0119 ju\u017c inaczej.<\/p>\n<p>P\u0119tl\u0119 z artyku\u0142u da si\u0119 wi\u0119c rozszerzy\u0107 na zale\u017cno\u015bci: z tagu odczytuje si\u0119 identyfikatory w firingTriggerId i blockingTriggerId oraz zbiera nazwy wszystkich odwo\u0142a\u0144 {{\u2026}}, a nast\u0119pnie por\u00f3wnuje sumy kontrolne tych trigger\u00f3w w <code>daten[\"trigger\"]<\/code> i tych zmiennych w <code>daten[\"variable\"]<\/code> w kolejnych wersjach tak samo jak sum\u0119 tagu.<\/p>\n<p>Nawet to nie wystarcza w pe\u0142ni, bo zmienne mog\u0105 odwo\u0142ywa\u0107 si\u0119 do innych zmiennych. Dok\u0142adn\u0105 drog\u0105 jest \u015bledzenie odwo\u0142a\u0144, dop\u00f3ki nie przestan\u0105 pojawia\u0107 si\u0119 nowe; prostsz\u0105 jest por\u00f3wnanie od razu sum kontrolnych wszystkich element\u00f3w kontenera przy szukaniu wersji.<\/p>\n<h3>Co si\u0119 dzieje, gdy pobranie w p\u0119tli ko\u0144czy si\u0119 odpowiedzi\u0105 429?<\/h3>\n<p>Plik i tak powstaje. Bez dodatkowych opcji curl -s zapisuje do wyj\u015bcia tak\u017ce odpowied\u017a z b\u0142\u0119dem, wi\u0119c version-44.json zawiera wtedy komunikat b\u0142\u0119du API w formacie JSON zamiast kontenera. Przy nast\u0119pnym przebiegu plik uchodzi za istniej\u0105cy i zostaje pomini\u0119ty, a wi\u0119c w\u0142a\u015bnie linia, kt\u00f3ra czyni archiwum warto\u015bciowym, utrwala b\u0142\u0105d.<\/p>\n<p>Skrypt analizuj\u0105cy tego nie zg\u0142asza, lecz wprowadza w b\u0142\u0105d: <code>daten.get(\"tag\", [])<\/code> zwraca dla komunikatu b\u0142\u0119du pust\u0105 list\u0119, a wersja pojawia si\u0119 jako \u201enie istnieje\u201d, jakby tag zosta\u0142 w niej usuni\u0119ty.<\/p>\n<p>Samo dodanie -f nie wystarczy, bo przekierowanie &gt; tworzy plik, zanim curl odpowie; zosta\u0142by wtedy pusty plik, pomini\u0119ty tak samo. Pewn\u0105 drog\u0105 jest plik tymczasowy, kt\u00f3remu nadaje si\u0119 docelow\u0105 nazw\u0119 dopiero wtedy, gdy curl zako\u0144czy\u0142 si\u0119 powodzeniem, a <code>jq -e .containerVersionId<\/code> znajduje warto\u015b\u0107.<\/p>\n<h3>Czy wersja, w kt\u00f3rej zmieni\u0142 si\u0119 tag, jest te\u017c t\u0105, kt\u00f3ra dzia\u0142a\u0142a w danym dniu?<\/h3>\n<p>Niekoniecznie. Ka\u017cda publikacja tworzy wersj\u0119, ale nie ka\u017cda wersja zostaje opublikowana: wersj\u0119 da si\u0119 utworzy\u0107 bez uruchamiania jej na stronie, a starsz\u0105 wersj\u0119 da si\u0119 p\u00f3\u017aniej opublikowa\u0107 ponownie, na przyk\u0142ad \u017ceby cofn\u0105\u0107 zmian\u0119. Numer wersji oddaje wi\u0119c kolejno\u015b\u0107 powstania, a nie kolejno\u015b\u0107 publikacji.<\/p>\n<p>Przy zestawieniu z raportem liczy si\u0119 to, kiedy kt\u00f3ra wersja zacz\u0119\u0142a dzia\u0142a\u0107. Je\u015bli por\u00f3wnanie znajduje zmian\u0119 w wersji 44, trzeba ustali\u0107, czy i kiedy wersja 44 zosta\u0142a opublikowana i czy potem nie obowi\u0105zywa\u0142a zn\u00f3w starsza wersja.<\/p>\n<h3>Jakich uprawnie\u0144 potrzebuje cotygodniowe zadanie archiwizuj\u0105ce?<\/h3>\n<p>Wystarczy dost\u0119p do odczytu, jak podaje artyku\u0142, z zakresem tagmanager.readonly. Je\u015bli zadanie dzia\u0142a na koncie us\u0142ugi, jego adres e-mail musi zosta\u0107 dodany w Tag Managerze jako u\u017cytkownik z uprawnieniem do odczytu konta albo kontenera; sam zakres nie daje dost\u0119pu. Z samym prawem odczytu zadanie nie mo\u017ce niczego opublikowa\u0107, a utracony klucz ujawnia wtedy zawarto\u015b\u0107 kontenera, ale nie pozwala jej zmieni\u0107.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/web\" target=\"_blank\" rel=\"noopener noreferrer\">Tag Manager for web<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Lista wersji m\u00f3wi, kto i kiedy opublikowa\u0142, a nic o tym, co poruszy\u0142o si\u0119 w \u015brodku. Jedna suma kontrolna na element, poci\u0105gni\u0119ta przez wszystkie wersje, zamienia pytanie o czterdzie\u015bci wersji w tabel\u0119 z jednym zmienionym wierszem.<\/p>\n","protected":false},"author":1,"featured_media":13269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[117],"tags":[92229,92133,92238],"class_list":["post-13176","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl","tag-devops-pl","tag-google-tag-manager-pl","tag-tutorial-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Odczyt listy wersji przez API Tag Managera, znalezienie wersji zmiany tagu po sumie kontrolnej i pilnowanie przydzia\u0142u zapyta\u0144.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Odczyt listy wersji przez API Tag Managera, znalezienie wersji zmiany tagu po sumie kontrolnej i pilnowanie przydzia\u0142u zapyta\u0144.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-28T16:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag\",\"datePublished\":\"2026-09-28T16:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/\"},\"wordCount\":1470,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png\",\"keywords\":[\"DevOps\",\"Google Tag Manager\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/\",\"name\":\"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png\",\"datePublished\":\"2026-09-28T16:25:00+00:00\",\"description\":\"Odczyt listy wersji przez API Tag Managera, znalezienie wersji zmiany tagu po sumie kontrolnej i pilnowanie przydzia\u0142u zapyta\u0144.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tutorials-pl\\\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag | Lukas Wojcik","description":"Odczyt listy wersji przez API Tag Managera, znalezienie wersji zmiany tagu po sumie kontrolnej i pilnowanie przydzia\u0142u zapyta\u0144.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag | Lukas Wojcik","og_description":"Odczyt listy wersji przez API Tag Managera, znalezienie wersji zmiany tagu po sumie kontrolnej i pilnowanie przydzia\u0142u zapyta\u0144.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-28T16:25:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag","datePublished":"2026-09-28T16:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/"},"wordCount":1470,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png","keywords":["DevOps","Google Tag Manager","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/","name":"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png","datePublished":"2026-09-28T16:25:00+00:00","description":"Odczyt listy wersji przez API Tag Managera, znalezienie wersji zmiany tagu po sumie kontrolnej i pilnowanie przydzia\u0142u zapyta\u0144.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13176-tutorial-znalezienie-wersji-kontenera-w-.png","width":1200,"height":630,"caption":"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tutorials-pl\/tutorial-znalezienie-wersji-kontenera-w-ktorej-zmienil-sie-tag\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Znalezienie wersji kontenera, w kt\u00f3rej zmieni\u0142 si\u0119 tag"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13176"}],"version-history":[{"count":2,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13176\/revisions"}],"predecessor-version":[{"id":20828,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13176\/revisions\/20828"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13269"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}