Is Codecademy a good place to start learning the language of Adwords Scripts?

20 February 2020 update: My initial recommendation in this post was to sign up for the original JavaScript course on Codecademy. That course is no longer available and has been replaced. Don’t go for their new Introduction to JavaScript, that course is based on a new version of JavaScript and best practices that most Adwords Scripts do not use. It will unnecessarily confuse you. See my updated advice below for details.

You already know that learning the JavaScript programming language is a great way to get started with Adwords Scripts. To get the most out of the enormous potential of Adwords Scripts you need at least a decent understanding of JavaScript.

Codecademy looks like a great place for novices to start to learn and understand the language. But is it, really?

“What is Codecademy?”

Codecademy (not spelled “code academy”) is an online interactive platform that offers free coding classes in 12 different programming languages including JavaScript.

“Is the Codecademy JavaScript course a good way to learn JavaScript?”

The course used to be a decent start if you want to learn the basic concepts and syntax of JavaScript. No need to download or install anything, and no need to wait for a book to be delivered to your doorstep.  The course is free, it’s completely online, it’s interactive and fun, and it’s not that hard. Finishing the course enabled you to immediately start using Adwords Scripts by simply copy-pasting scripts and then start fooling around with the code.  That made Codecademy a great resource to give you a good grasp of the basics of the language of Google Ads Scripts and get started using them.

Note: you notice I am talking past sense here. The current version of the Javascript course on Codecademy teaches a lot of irrelevant javascript concepts that are only relevant if you are into web development. This made the course less relevant for us Google Ads Scripts developers. See my recommendation below for a better alternative.

However, if you really want to learn how to program Adwords Scripts for yourself I would say no. Codecademy does not teach you the mindset of programming. Being a programmer is more than simply being able to tinker with syntax. It’s about having a particular mindset, where you are able to systematically break down a problem into individual and logical steps, and then recreate that in a language that the computer understands. This is a tough skill and is hard to acquire. Codecademy does not do a decent job in this respect. If you really want to dig in and learn to program Google Ads Scripts yourself I would recommend learning Javascript through somewhat more difficult courses like Eloquent Javascript.

“Is Codecademy a good way to learn JavaScript for Google Ads Scripts?”

Like all the current JavaScript courses currently out there, Codecademy is not tailored to the needs of a PPC expert managing Google Ads. Again, it will teach you the basics of JavaScript. But it will not teach you anything about the Google Ads Scripts library, its objects, iterators, and selectors. These are concepts you will need to familiarize yourself with in some other way (you can subscribe to my newsletter below to learn how). Also, if you already know the basics of JavaScript, Codecademy will not move you forward in using Adwords Scripts.

“So, if Codecademy isn’t a good way to learn JavaScript for Adwords Scripts, what would you recommend?”

If you’re a non-technical type, JavaScript feels like Gibberish to you, you’re completely new to programming, or if you’re in the infancy of learning JavaScript, take these steps:

  1. FreeCodeCamp has good resources for learning the basics of JavaScript (and more). They’re also beginner-friendly, even if you’re not knowledgeable about HTML and CSS. I’d suggest you create an account on freeCodeCamp (it’s completely for free) so you can save your progress with the lessons.
  2. Go through freeCodeCamp’s introductory lessons for basic JavaScript.
  3. Get started with the course and try to finish one lesson each day. Do all the exercises. This will keep you moving and motivated.
  4. Don’t pay too much attention to the web development side of JavaScript, focus on the syntax of the language and its basic concepts like variables, functions, control flows (if-then statements), loops (for-while loops), objects and arrays.
  5. After finishing the course, celebrate! You just introduced yourself to one of the most powerful skills of current-day digital marketers; programming. Go ahead, pop that bottle.

Now that you’ve learned the basic concepts of JavaScript you’re ready to start playing around with different things inside the AdWords Script Editor. Install and run your first Google Ads script. Learn about Iterators and Selectors. Start iterating over your campaigns/ad groups and keywords. Log the results of your script and look at the results of what you are doing in Preview mode. Copy-paste some of the Google code samples and edit parts of the code. Have fun!

Was this helpful? If so, subscribe to my mailing list to receive more scripts and updates on how to start learning to write your own Google Ads Scripts.

3 Ways to Finally Get Started with Google Ads Scripts

“Ok, I want to use Google Ads Scripts, but how on earth do I even get started?”

Well, as with everything in PPC, it depends. There are basically three ways to get started with scripts, and the best way for you depends on your specific situation.

Option 1: Copy-Paste publicly available scripts

Googling for scripts written by others is a perfect way to easily get you started in no time. You don’t have to figure everything out yourself and most scripts are easily modified/configured to your needs.

The PROS

The CONS

  • Although there are many scripts out there, the set is limited. Once you get a feel for what is possible and realize scripts can do almost ANYTHING  you’ll probably come up with use cases that aren’t covered by the free ones.
  • Many of the scripts that are freely available aren’t maintained and are not supported. This means the code can be out of date and or dysfunctional.
  • Black Box. If you simply copy-paste scripts without reading the code you don’t know what is really going on if you execute the script. Do you really trust the script to do only the things you want it do, and do nothing more?

That brings us to our next option.

Option 2: Write your own first and easy script

If you write your scripts yourself, you’ll definitely know what is going on.  This is also a great way to start learning a new skill that potentially will skyrocket your career. (PPC skills + Automation skills = $$$)

The PROS

  • Almost endless possibilities to automate many tedious, repetitive PPC tasks. Customized to your exact needs. You will be able to write/enhance/edit scripts to automate processes that are unique to your business.
  • You’re in full control; the scripts does exactly what you want it to do.
  • It’s FREE (well, sort of). The only expense is your time, not $.
  • Loads of free resources to start learning Google Ads Scripts. Here’s a great first script example that teaches you about basic Javascript concepts.

The CONS

  • Programming skills and Javascript knowledge are required
  • It can be hard to come up with, and write Scripts yourself
  • Oh yes, you need to spend time maintaining the code, which can be tedious.
Option 3: Have someone else write one for you

Why waste time and energy if someone else can do it for you? Hiring freelancers to write scripts for you is a great way to get started if you really have no clue where to start, the language of javascript sounds like ancient Greek to you, or you just don’t feel like spending any time in code yourself.

The PROS

  • Again, almost endless possibilities to automate many tedious, repetitive PPC tasks. Customized to your specific needs.
  • You do not need to code anything yourself
  • Upwork has some Freelance javascripts developers who specialise in Google Ads. Just describe your needs and get him/her to write and help you run your first script.

The CONS

  • You need to find a good programmer who knows about Google Ads
  • You need to be able to communicate with developers
  • Cash out $

 

There you have it. Three ways to get started with your first script in less than 30 min.

Was this helpful?
Subscribe to my mailing list to receive more scripts and updates on how to start learning to write your own Google Ads Scripts.

A Script to receive Daily Budget Overdelivery Alerts

Here’s a script that will alert you if and when the latest Daily Budget change by Google will cause Google to overdeliver and spend more than your daily budget.
The script will compare the anticipated ad spend based on your campaign daily budget settings with the actual ad spend.
It will check for overdelivery in any of three periods: yesterday, last week and last month.
In case of big differences (overdelivery by Google) it will report an alert, log the alert in the specified Google Sheet and inform you about the alert via email

Here’s what the output will look like:

 

Don’t worry if you have never run an Adwords Script before. It is fairly easy if you follow these steps on how to set up and run Adwords Scripts.

Be sure to create a new empty spreadsheet and add the url to the script. Also add your email adress. (lines 28 and 29)
You can also set the threshold variables to whatever percentage of overdelivery is acceptable to you. (lines 36 to 38)

You can schedule the script to run daily. If you do so, change the ‘firstRun’ to false (line 33).

Here are some instructions on how to install the script if you’ve never done so before.

Subscribe to my mailing list to receive more scripts and updates on how to start learning to write your own Google Ads Scripts.

 

// Copyright 2017, Nils Rooijmans, All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


/**
* @overview:
* For each campaign that is NOT labeled 'noBudgetAlert' this script will compare the anticipated ad spend based on daily budget settings with the actual ad spend. 
* In case of big differences (overdelivery by Google) it will report an alert, log the alert in the specified Google Sheet and inform about the alert via email
* 
* For the MCC version please contact Nils Rooijmans [nils@nilsrooijmans.com]
*
* @author:  Nils Rooijmans [nils@nilsrooijmans.com]
* @version: 1.0
*/

// 
var SPREADSHEET_URL = "[REPLACE WITH YOUR SPREADSHEET URL]";  //insert a new blank spreadsheet url, replace everything between and including the square brackets
var EMAIL = "[REPLACE WITH YOUR EMAIL]"; //insert your email, replace everything between and including the square brackets

var CAMPAIGNLABEL = "noBudgetAlert";  //campaign level label for campaigns to ignore

var firstRun = true; // set to false if you schedule the script to run on daily basis, set to true for first run or if you run only once

// Config variables to set the percentage of overdelivery allowed before an alert is sent
var dailySpendAlertThreshold = 0.2; // alert if overdelivery is greater than 20% of daily budget
var weeklySpendAlertThreshold = 0.1; // alert if overdelivery is greater than 10% of 7 times the daily budget (for the 7 days before today)
var fourWeeklySpendAlertThreshold = 0.05; // alert if overdelivery is greater than 5% of 28 times the daily budget (for the 28 days before today)


function main() {  

  var accountAlert = false;
  var campaignAlert_dailyCheck = false;
  var campaignAlert_weeklyCheck = false;
  var campaignAlert_fourWeeklyCheck = false;
  
  var adSpendYesterday = 0;
  var adSpend1to7DaysAgo = 0;
  var adSpend1to28DaysAgo = 0;
  var differenceDailyCheck = 0;
  var differenceWeeklyCheck = 0;
  var differenceFourWeeklyCheck = 0;
  
  var d = Utilities.formatDate(new Date(), AdWordsApp.currentAccount().getTimeZone(), "MMM dd,yyyy");
  var dayOfTheWeek = new Date(d).getDay(); 
  var dayOfTheMonth = new Date(d).getDate();

  //prepare the sheet
  var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
  var sheet = ss.getActiveSheet();
  if (sheet.getRange('A1').isBlank()) {
    sheet.appendRow([
    "Date", 
    "Account Name", 
    "Campaign Name", 
    "Ad Spend Yesterday", 
    "Anticipated Spend", 
    "Difference", 
    "Ad Spend 1 to 7 Days Ago", 
    "Anticipated Spend", 
    "Difference", 
    "Ad Spend 1 to 28 Days Ago", 
    "Anticipated Spend", 
    "Difference"
    ]);
  }
  
  // prepare contents of email
  var html = [];
  html.push(
    "<html>",
    "<body>", 
    "<p>Alerts are logged in sheet: ", SPREADSHEET_URL ,"</p>",
    "<p>----------------------------------------------------</p>",
    "<p>OVERDELIVERY ALERTS FOR:</P>",
    "<P>ACCOUNT - CAMPAIGN</p>",
    "<p>----------------------------------------------------</p>"
  );  
 
     
  // if not already created, create label used to Ignore campaigns
  // this is necessary for the script to run even if no campaign has been labeled
  var labelName;
  var labelExists = false;
  var labelIterator = AdWordsApp.labels().get();
  while (labelIterator.hasNext()) {
    labelName = labelIterator.next().getName();
    if (labelName.localeCompare(CAMPAIGNLABEL) == 0){labelExists = true; break;} else {labelExists = false}
  }
  if (labelExists == false) {
    AdWordsApp.createLabel(CAMPAIGNLABEL);
    Logger.log("labelCreated");
  } else {
    Logger.log("labelExists");
  } 
  
  
  // Let's check the campaigns for overdelivery
  Logger.log("Checking account: "+AdWordsApp.currentAccount().getName());    
  
  var campaignSelector = AdWordsApp.campaigns()
     .withCondition("LabelNames CONTAINS_NONE ['" + CAMPAIGNLABEL + "']")
     .withCondition("Status = ENABLED")
     .forDateRange("YESTERDAY");
  
  var campaignIterator = campaignSelector.get();
  
  while (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    Logger.log("    Checking Campaign: "+campaign.getName());

    var campaignAlert_dailyCheck = false;
    var campaignAlert_weeklyCheck = false;
    var campaignAlert_fourWeeklyCheck = false;
    
    var anticipatedDailyAdSpend = campaign.getBudget().getAmount();
    var anticipatedWeeklyAdSpend = 7 * anticipatedDailyAdSpend;
    var anticipatedFourWeeklyAdSpend = 28 * anticipatedDailyAdSpend;

    // daily check
    //Logger.log("DAILY CHECK");
    adSpendYesterday = campaign.getStatsFor("YESTERDAY").getCost();
    differenceDailyCheck = (adSpendYesterday-anticipatedDailyAdSpend)/anticipatedDailyAdSpend;
    if (differenceDailyCheck > dailySpendAlertThreshold ) {
       campaignAlert_dailyCheck = true;
       Logger.log("DAILY overdelivery spend alert");
    }
    
    // weekly check  
    if (dayOfTheWeek == 1 || firstRun){  // if not the firstRun this check runs only on mondays
      //Logger.log("WEEKLY CHECK");
      adSpend1to7DaysAgo = campaign.getStatsFor(dateBefore(7),dateBefore(1)).getCost();
      differenceWeeklyCheck = (adSpend1to7DaysAgo-anticipatedWeeklyAdSpend)/anticipatedWeeklyAdSpend;
      if (differenceWeeklyCheck > weeklySpendAlertThreshold ) {
         campaignAlert_weeklyCheck = true;
         Logger.log("WEEKLY overdelivery spend alert");
      }
    }

    // 4 weekly check
    if ((dayOfTheWeek == 1 && dayOfTheMonth < 8) || firstRun){ //if not the firstRun this check runs only on the first monday in a month //Logger.log("MONTHLY CHECK"); adSpend1to28DaysAgo = campaign.getStatsFor(dateBefore(28),dateBefore(1)).getCost(); differenceFourWeeklyCheck = (adSpend1to28DaysAgo-anticipatedFourWeeklyAdSpend)/anticipatedFourWeeklyAdSpend; if (differenceFourWeeklyCheck > fourWeeklySpendAlertThreshold) {
         campaignAlert_fourWeeklyCheck = true;
         Logger.log("4-WEEKLY overdelivery spend alert");           
      }   
    }
  
    // add alerts to sheet  
    if (campaignAlert_dailyCheck||campaignAlert_weeklyCheck||campaignAlert_fourWeeklyCheck) {

      accountAlert = true;
        
      sheet.appendRow([
        d, 
        AdWordsApp.currentAccount().getName(), 
        campaign.getName(), 
        adSpendYesterday, 
        anticipatedDailyAdSpend, 
        (differenceDailyCheck*100).toFixed(1)+"%", 
        adSpend1to7DaysAgo, 
        anticipatedWeeklyAdSpend, 
        (differenceWeeklyCheck*100).toFixed(1)+"%", 
        adSpend1to28DaysAgo, anticipatedFourWeeklyAdSpend, 
        (differenceFourWeeklyCheck*100).toFixed(1)+"%"
      ]);  
      
      Logger.log("ALERT ADDED TO SHEET");
      
      if (campaignAlert_dailyCheck) sheet.getRange(sheet.getLastRow(), 6).setFontColor("red");
      if (campaignAlert_weeklyCheck) sheet.getRange(sheet.getLastRow(), 9).setFontColor("red");
      if (campaignAlert_fourWeeklyCheck) sheet.getRange(sheet.getLastRow(), 12).setFontColor("red");
      
      html.push("<p>" + AdWordsApp.currentAccount().getName() + " | " + campaign.getName() + "</p>");             
    }

  if (accountAlert) { // if there is any alert for any of the campaigns , send email
    MailApp.sendEmail(EMAIL, "Overdelivery Alerts", "", {htmlBody: html.join("\n")});
  }

}
  
function dateBefore(days){ 
  var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
  var now = new Date();
  var dateBefore = new Date(now.getTime() - days * MILLIS_PER_DAY);
  var timeZone = AdWordsApp.currentAccount().getTimeZone();
  return Utilities.formatDate(dateBefore, timeZone, 'yyyyMMdd');
}

 

Subscribe to my mailing list to receive more scripts and updates on how to start learning to write your own Google Ads Scripts.

Suggestions for Books on Adwords for PPC Professionals

“What good Google Adwords books are out there that will help me improve my PPC skills?”

Well, books have the risk of being outdated. A lot of digital marketing strategy remains the same over the years, but the tactics rapidly change. Books may not be the best way to learn about Adwords and PPC.  For myself I prefer online sources as they tend to be more up to date.

However, there is still a lot you can learn about Adwords and PPC by reading some or all of the recommended books listed below.

For the absolute beginners

Pay Per Click Search Engine Marketing For Dummies – Peter Kent

This book is a very easy read, also if you’re not a native English speaker. It covers the very basics of PPC.

Note: the basic concepts are timeless, however some parts of the content of the book are outdated.

Pay Per Click Search Engine Marketing For Dummies – Peter Kent

This book will really get you started using Adwords. It’s a much better way than trying to absorb all those Google ‘help’ pages. A comprehensive instruction manual on doing things the right way, (which is not necessarily Google’s way!)

Pay-Per-Click Search Engine Marketing: An Hour a Day –  David Szetela and Joseph Kerschbaum

This book covers a bit more detail on how to set up an account in Google and gives helpful hints and tools to build a solid well thought out PPC campaign. Great for training new employees as well.

David Szetala is a veteran in the PPC arena. He knows his stuff. I also recommend you subscribe and download his podcast ‘PPC Rockstars’ and start listening from the beginning for your education.

For intermediates

Ultimate Guide to Google AdWords – Perry Marshall

A great resource to provide a practical, comprehensive, step-by-step breakdown of the platform that enables you to confidently manage the Adwords platform on your own. This book covers more details than the ones before. Careful though as some might be outdated.

For the pros

Advanced Google AdWords – Brad Geddes

If you’ve been doing Adwords for hundreds or thousands of hours already this is your go-to destination to reach the next level. Brad truly is the leader in the space when it comes to Adwords education. He has been teaching Adwords for over 12 years and this book is the Adwords bible. The book is enjoyable and shows step by step instructions with screenshots that explain Brad´s detailed thinking and advanced tactics.

Subscribe to my mailing list to receive more scripts and updates on how to start learning to write your own Google Ads Scripts.

The Best Google Ads Script I Have Ever Used

“What is the best Google Ads Script you have ever used?”

Although I have many favorite scripts in my arsenal and they are all very useful there is one single clear winner for me. This is the script I install the first day when taking over a new account. It is also a great way to finally get started using Google Ads Scripts.

I’m talking about a script that automatically alerts me if any of my landers are broken: the Broken Link Checker script, published by our friends at Google.

Broken links occur because of many reasons, mostly out of your control. Not the least one is IT deploying new versions of the website without proper testing. Recognizable? Uhhh, yeah.

A click on a broken landing page url is not only a waste of your budget, it’s also a missed opportunity to convert. That visitor is never coming back! Next to that, it’s a negative brand experience that even might hurt future CTRs, and thus Quality Scores.

What makes this script my winning script?

My all-time favorite script enables me to do something that is practically impossible without automation. In this sense, it does not improve the efficiency of my work that much, since before using the script I just didn’t do this task at all. (Yes, fair to say I’ve spend buckets of coins on clicks to 404 error pages, especially from sitelinks).
It does however enormously improve the effectivity of my work. How so? Well, it reduces the amount of wasted ad spend in my accounts and reduces missed opportunities for increasing revenue.
More revenue, at fewer costs! That makes me a happy camper.

Next to that, the script is publicly available, open source and free to use.
It is easy to install, easy to configure and easy to run. You don’t need any scripting knowledge whatsoever to get started with this one.
It is well-documented and continuously supported by Google developers. So no worries about running a script that malfunctions. No need to debug or maintain anything yourself.

So…do yourself a favor. Make sure all your links work correctly.
Install the script. Set it, forget it.

PRO TIP: let your fellow SEO colleagues know when you’ve discovered some broken links. They will thank and praise you for it.

And for all you working at an agency, here’s the MCC version of the script.

 

Be sure to check out more great scripts in The Ultimate Google Ads Scripts Library, containing over 400 free Google Ads scripts. 

Join thousands of PPC geeks who already have access: