{"id":7405,"date":"2025-04-21T14:56:44","date_gmt":"2025-04-21T14:56:44","guid":{"rendered":"https:\/\/hishamghanayem.com\/?p=7405"},"modified":"2025-04-21T16:45:00","modified_gmt":"2025-04-21T16:45:00","slug":"from-courses-to-code-building-my-first-google-tag-manager-add-on-with-apps-script","status":"publish","type":"post","link":"https:\/\/hishamghanayem.com\/en\/data-analysis\/from-courses-to-code-building-my-first-google-tag-manager-add-on-with-apps-script","title":{"rendered":"From Courses to Code: Building My First Google Tag Manager Add-on with Apps Script"},"content":{"rendered":"\n<p>Hey friends <\/p>\n\n\n\n<p>Over the past few weeks, I\u2019ve been working on a personal project that\u2019s turning into something I\u2019m really proud of:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>A Google Sheets Add-on that fetches and audits GTM container data like tags, triggers, and workspaces \u2014 all from the comfort of a spreadsheet.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"> Why I\u2019m Doing This<\/h5>\n\n\n\n<p>As a <strong>Digital Analyst<\/strong>, I work closely with tools like Google Analytics, GTM, and BigQuery every day.<br>But I realized something important:<\/p>\n\n\n\n<p> While I could analyze data well, I wanted to <strong>go deeper technically<\/strong> \u2014 not just use tools, but build them.<br>That\u2019s how this GTM MVP idea was born.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\">What the Tool Does (so far)<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lets me choose a GTM account &gt; container &gt; workspace<\/li>\n\n\n\n<li>Pulls a list of <strong>tags, triggers, and workspace details<\/strong><\/li>\n\n\n\n<li>Shows which triggers fire which tags<\/li>\n\n\n\n<li>Shows <strong>parameters<\/strong> used inside each tag (like <code>eventName<\/code>, <code>conversionId<\/code>)<\/li>\n\n\n\n<li>Includes a direct <strong>&#8220;GTM URL&#8221; column<\/strong> so I can click and jump to GTM instantly<\/li>\n\n\n\n<li>Writes everything into a clean, organized Google Sheet<\/li>\n<\/ul>\n\n\n\n<p>It\u2019s basically my <strong>GTM Inspector for Analysts<\/strong> \u2014 and it works \u2728<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\">The Courses That Helped Me Kickstart<\/h5>\n\n\n\n<p>These two courses were a game-changer for me:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a class=\"\" href=\"https:\/\/www.udemy.com\/course\/apps-script-course\/?couponCode=KEEPLEARNING\" target=\"_blank\" rel=\"noopener\">Google Apps Script Complete Course \u2013 Beginner to Advanced<\/a><br>\u2192 Helped me understand how to connect Google Sheets with APIs.<\/li>\n\n\n\n<li><a class=\"\" href=\"https:\/\/www.udemy.com\/course\/the-complete-web-development-bootcamp\/?couponCode=KEEPLEARNING\" target=\"_blank\" rel=\"noopener\">The Complete Full-Stack Web Development Bootcamp<\/a><br>\u2192 Helped me learn JavaScript basics and how frontend\/backend works.<\/li>\n<\/ul>\n\n\n\n<p>Both gave me the confidence to <strong>not just copy code<\/strong>, but understand it and shape it for my own needs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"> What I\u2019m Learning (and Loving)<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JavaScript fundamentals: <code>map()<\/code>, <code>forEach<\/code>, conditional rendering, error handling<\/li>\n\n\n\n<li>How the GTM API works (including hidden fields like <code>parameter[]<\/code>)<\/li>\n\n\n\n<li>How to write reusable, well-documented Apps Script code<\/li>\n\n\n\n<li>How to build a product mindset: small features that solve real problems<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"> Why This Blog?<\/h5>\n\n\n\n<p>I wanted to keep a small public <strong>diary of my journey<\/strong> \u2014 not for likes, but to track my own progress, keep myself accountable, and maybe help someone else thinking:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&#8220;Can I learn to build something useful, even if I\u2019m not a developer?&#8221;<\/p>\n<\/blockquote>\n\n\n\n<p>Yes, you absolutely can. I&#8217;m doing it one line at a time.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h5 class=\"wp-block-heading\"> What\u2019s Next<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add support for built-in variables and versioning<\/li>\n\n\n\n<li>Let users select which columns (parameters) they want to see<\/li>\n\n\n\n<li>Add email alerts or summaries for GTM changes<\/li>\n\n\n\n<li>Maybe (just maybe) turn it into a small SaaS add-on<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>If you&#8217;re interested in building tools with Apps Script, APIs, and a bit of creative problem solving \u2014 feel free to follow along. I\u2019ll keep sharing what I learn along the way \ud83d\ude4c<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"> Want to see the code?<\/h3>\n\n\n\n<p>You can check it out here:<br>\ud83d\udcc2 GitHub Repo \u2192 https:\/\/github.com\/Hisham-ghanayem\/gtm-api-to-sheets<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey friends Over the past few weeks, I\u2019ve been working on a personal project that\u2019s turning into something I\u2019m really proud of: A Google Sheets Add-on that fetches and audits GTM container data like tags, triggers, and workspaces \u2014 all from the comfort of a spreadsheet. Why I\u2019m Doing This As a Digital Analyst, I [&hellip;]<\/p>","protected":false},"author":1,"featured_media":7419,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"postBodyCss":"","postBodyMargin":[],"postBodyPadding":[],"postBodyBackground":{"backgroundType":"classic","gradient":""},"footnotes":""},"categories":[70,7,10,37],"tags":[],"class_list":["post-7405","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-case-study","category-data-analysis","category-data-storytelling","category-tracking"],"_links":{"self":[{"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/posts\/7405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/comments?post=7405"}],"version-history":[{"count":4,"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/posts\/7405\/revisions"}],"predecessor-version":[{"id":7424,"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/posts\/7405\/revisions\/7424"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/media\/7419"}],"wp:attachment":[{"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/media?parent=7405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/categories?post=7405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hishamghanayem.com\/en\/wp-json\/wp\/v2\/tags?post=7405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}