[webinar] a non-coders guide to adwords scripts
TRANSCRIPT
![Page 1: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/1.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
A Non-Coders Guide to Adwords ScriptsIt’s not as intimidating as you thought!
Point It Digital Marketingwww.Pointit.com 06.17.2015
![Page 2: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/2.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
Housekeeping Slide
Additional Q&A addressed and at the end of session
A link to view a recorded version of the webinar will be emailed within 48 hours
Raise your hand if you are having technical difficulties
Hide the chat window
Submit question via chat
Toolbox Blog on the Point It Website
![Page 3: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/3.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
#PI_Scripts#AdWordsScripts
@ChristiJOlson @SamuelDJames
![Page 4: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/4.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
About Point It
Our Clients
Our Services
![Page 5: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/5.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
Today’s Presenters
5
Christi OlsonPoint It Digital MarketingDirector of SEM
Samuel D. JamesPoint It Digital MarketingDirector of Analytics
![Page 6: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/6.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STRUCTURE BASIC CONCEPTSREADING SCRIPTSEDITING SCRIPTS
WHAT WE’LL BE TALKING ABOUT TODAY:
![Page 7: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/7.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
IS LIKE LEARNING A NEW LANGUAGE…
STRUCTURE TERMINOLOGY
BASIC RULES
PRACTICE MAKES PERFECT
![Page 8: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/8.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
SCRIPTS ENABLE YOU TO AUTOMATE ALL THE THINGS
THAT CAN BE DONE MANUALLY IN ADWORDS
![Page 9: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/9.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
SCRIPTS CANMAKE CHANGES TO OR REPORT ON
ANY ELEMENT OF AN ADWORDS ACCOUNT.
ACCOUNT OR MCC LEVEL
![Page 10: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/10.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
ANYTHING YOU CAN DO SCRIPTS CAN DO TOO
“Annie Get Your Gun”
![Page 11: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/11.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
SO WHY ARE SO MANY MARKETERS INTIMIDATED
BY SCRIPTS?
![Page 12: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/12.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
THEUNKNOWN
IS JAVASCRIPT.
IT’S NOT PART OF THE AVERAGE SEM SKILL SET.
![Page 13: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/13.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
![Page 14: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/14.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
![Page 15: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/15.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
LET'S START WITH
STRUCTURE
![Page 16: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/16.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
I LIKE COOKING MY FAMILY AND PETS
![Page 17: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/17.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
I LIKE COOKING, MY FAMILY, AND PETS.
USE PROPER STYLE [PUNCTUATION]THE LIVES IT SAVES MIGHT BE YOUR FAMILY'S
Google JavaScript Coding Style Guide:
bit.ly/GoogleJavaScript
![Page 18: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/18.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
NOTEPAD++ bit.ly/Notepad-plusplus
• OUTLINES CODE
• MAKES IT EASIER TO SEE WHAT YOU ARE DOING
![Page 19: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/19.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
SCRIPTS ARE CASE SENSITIVE AND
NEED TO BE WRITTEN IN camelCase
![Page 20: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/20.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
// IS A SINGLE COMMENT LINE
// comments can start anywhere in a line and javascript will skip to the end of the line// add as many or as few comments to your code explaining what it does
(DOUBLE SLASH)
![Page 21: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/21.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
/* SINGLE FORWARD SLASH + ASTERISK
(SLASH)
*Signifies comments that span multiple*lines. *Multiline comments end with */
![Page 22: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/22.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
ALWAYS PREVIEW
A SCRIPT BEFORE YOU RUN IT
![Page 23: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/23.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts@ChristiJOlson @SamuelDJames
LET'S MOVE TO THE
BASIC CONCEPTS
![Page 24: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/24.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
THE KEY ITEMS YOU NEED TO KNOW:
• FUNCTIONS• OBJECTS (ELEMENTS)• ENTITIES• VARIABLES• METHODS• SELECTORS• ITERATORS
![Page 25: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/25.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
ANATOMY OF A BASIC SCRIPT
FUNCTION
SELECTORS
ITERATOR + next METHODS
VARIABLE, OBJECT, ENTITY
LOGGER
METHODS
![Page 26: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/26.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
FUNCTIONS PERFORM TASKS / PROCEDURES
{ } CURLY BRACKETS DEFINE THE BEGINNING & END OF A
FUNCTION
![Page 27: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/27.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
OBJECTS -- COLLECTION OF “ENTITIES”
AdWordsApp MccApp
SpreadsheetApp UrlFetchApp
ADWORDSACCOUNT
CONNECTS WITH SPREADSHEETS
(FOR REPORTING)
ACROSS YOUR MCC
COMMUNICATES WITH OTHER SERVICES &
APPLICATIONS
![Page 28: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/28.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
ENTITIES – ELEMENT OR PROPERTY
List of AdWords Entities:
bit.ly/1aeDxby
![Page 29: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/29.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
VARIABLES (VAR) ARE USED TO NAME & STORE DATA WITHIN YOUR SCRIPTS
variables are like a container to store “data”
![Page 30: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/30.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
ESTABLISH YOUR OBJECTAND SELECT AN ENTITY TO QUERY
var keywords = AdWordsApp.keywords()
OBJECTNAMED
VARIABLE ENTITY
JOIN AN OBJECT AND ENTITY WITH A PERIOD
![Page 31: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/31.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
METHODS ARE HOW SCRIPTS INTERACT WITH OBJECTS
• RETRIEVE INFORMATION ABOUT AN OBJECT (WHAT IT IS)
• ASK AN OBJECT ABOUT ITSELF (WHAT CAMPAIGN A KWD IS IN)
• TELL THE OBJECT TO DO SOMETHING (CHANGE STATUS)
![Page 32: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/32.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
EXAMPLES OF METHODS
get()getQualityScore()
setDestinationURL()WHEN SETTING OR SPECIFYING A VALUES ENTER IT BETWEEN THE BRACKETS ()
SOME METHODS REQUIRE VALUES. MOST ARE LEFT BLANK ()
![Page 33: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/33.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
SELECTORS REFINE THE LIST OF ENTITIES
•withCondition()
•withIds()•forDateRange()•withLimit()•orderBy()
![Page 34: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/34.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
SELECTORS REFINE THE LIST OF ENTITIES AND CAN ORDER IT
• withCondition()(‘Entity > N’); Greater than(‘Entity <N’); Less than
•forDateRange()forDateRange(‘YESTERDAY’); forDateRange(‘LAST_14_DAYS’);
•orderBy()(‘Entity ASC’); Ascending Order (‘Entity DESC’); Descending Order
![Page 35: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/35.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
ITERATORS RETURN THE NEXT ITEM
• ITERATORS ARE LIKE AN ARRAY• PATTERN BASED SEARCH• COME AFTER SELECTORS
hasNext()objectNext()
![Page 36: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/36.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
LOGGER OUTPUTS THE DATA TO A PREVIEW PANEL
• HELP TROUBLESHOOT SCRIPTS
• SLOWS PROCESSING TIME• RECOMMEND REMOVING
AFTER DEBUGGING
![Page 37: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/37.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
LET'S TIE IT TOGETHER
READING SCRIPTS
![Page 38: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/38.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
ANATOMY OF A BASIC SCRIPT
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
![Page 39: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/39.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
FUNCTION starts the script
ANATOMY OF A BASIC SCRIPT
![Page 40: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/40.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
VARIABLE named keywordsOBJECT ENTITY
ANATOMY OF A BASIC SCRIPT
![Page 41: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/41.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
SELECTORS find keywords:• Enabled• Descending Order by Impression• Date = Yesterday• First 10 (by impression)
ANATOMY OF A BASIC SCRIPT
![Page 42: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/42.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
METHODS gets keywords
ANATOMY OF A BASIC SCRIPT
![Page 43: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/43.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
ITERATOR + next METHODS
ANATOMY OF A BASIC SCRIPT
![Page 44: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/44.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
LOGGER outputs the data for preview
ANATOMY OF A BASIC SCRIPT
![Page 45: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/45.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
closes out the functioncloses out the iterator
ANATOMY OF A BASIC SCRIPT
![Page 46: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/46.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
function main() {var keywords = AdWordsApp.keywords().withCondition(“Status = ‘ENABLED’”)
.orderBy("Impressions DESC")
.forDateRange("YESTERDAY")
.withLimit(10)
.get();
Logger.log("10 keywords with most impressions yesterday");while (keywords.hasNext()) {var keyword = keywords.next();Logger.log(keyword.getText() + ": " +
keyword.getStatsFor("YESTERDAY").getImpressions());}
}
ANATOMY OF A BASIC SCRIPT
closes out the function
FUNCTION starts the script
closes out the iterator
SELECTORS find keywords:• Enabled• Descending Order by Impression• Date = Yesterday• First 10 (by impression)
ITERATOR + next METHODS
VARIABLE ties ENTITY & OBJECT together
LOGGER
METHODS gets keywords
![Page 47: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/47.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
GET STARTED NOW WITH
PRE-WRITTEN SCRIPTS
![Page 48: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/48.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
Adwords Developer Script Solutions
bit.ly/ScriptSolutions
![Page 49: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/49.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
SCRIPTS YOU CAN USE NOW:
• Campaign & Keyword Performance Report, Written by Russ Savage
• Quality Score Tracker, Written by Martin Roettgerding
• Keyword Performance by QS & Position, Written by Google Developers
• Anomaly Detector, Written by Google Developers
• Broken URL Checker, Written by Google Developers & Russ Savage (FreeAdwordsScripts.com)
• Account Audit, Written by Russ Savage (FreeAdwordsScripts.com)
• Search Query Manager, Written by Marcela De Vivo (Gryffin.com)
Toolbox Blog on the Point It Website
![Page 50: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/50.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
RESOURCES AND PEOPLE TO FOLLOW:
Optmyzr.com FreeAdwordsScripts.com
@RussellSavage@SiliconVaelleys@ArmondHammer@BloomArty
![Page 51: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/51.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
LET'S GET COMFORTABLE WITH
EDITING SCRIPTS
![Page 52: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/52.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STARTED W/ KEYWORD PERFORMANCE REPORT
Wanted to add 2 additional data points:• Converted Clicks (CVR, CPA)• Conversion Value (ROAS)
![Page 53: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/53.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
EXISTINGS SCRIPT: KWD PERFORMANCE REPORT
bit.ly/GG-QSkwdScript
![Page 54: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/54.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
DON’T FORGET TO UPDATE THE EMAIL/URL (VAR)
• RECIPIENT_EMAIL• your email address
• SPREADSHEET_URL• URL for the Google Spreadsheet
// Comma-separated list of recipients. Comment out to not send any emails.var RECIPIENT_EMAIL = '[email protected]';
// URL of the default spreadsheet template. This should be a copy of http://goo.gl/cULxUXvar SPREADSHEET_URL = 'https://docs.google.com/spreadsheet/ccc?key=abc123#gid=0';
![Page 55: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/55.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
GOAL: ADD ADDITIONAL DATA POINTS
Wanted to add 2 additional data points:Converted Clicks (CVR, CPA)• Conversion Value (ROAS)
stats.getConvertedClicks() workedstats.getConversionValue() kept giving me an error
getConversionValue() is not available with statsit has to be pulled via a separate type of report
![Page 56: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/56.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
THE OUTPUT WITH CONVERTED CLICKS
Wanted to add 2 additional data points:• Converted Clicks (CVR, CPA)• Conversion Value (ROAS)
![Page 57: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/57.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
KEYWORD PERFORMANCE REPORT
Added to the additional columns to Headers
function outputQualityScoreData(sheet) {// Output header rowvar header = ['Quality Score','Num Keywords','Impressions','Clicks','CTR (%)','Cost','ConvertedClicks',
];sheet.getRange(3, 2, 1, 7).setValues([header]);
This is an ARRAY In this context it let you update specific data within a spreadsheet. You’re telling it where!getRange = (row to start on,
column to start on, number of rows to include,number of columns to include)
![Page 58: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/58.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
KEYWORD PERFORMANCE REPORT
Added to the additional columns to Headers
function outputQualityScoreData(sheet) {// Output header rowvar header = ['Quality Score','Num Keywords','Impressions','Clicks','CTR (%)','Cost','ConvertedClicks',
];sheet.getRange(3, 2, 1, 7).setValues([header]);
I added 1 columnsIncrease # of columns from 6 to 7
Check for multiple instances of arrays within the script!
![Page 59: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/59.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
KEYWORD PERFORMANCE REPORT
Added to the additional getStats()
// Compute datavar keywordIterator = AdWordsApp.keywords()
.forDateRange('LAST_WEEK')
.withCondition('Impressions > 0')
.get();while (keywordIterator.hasNext()) {var keyword = keywordIterator.next();var stats = keyword.getStatsFor('LAST_WEEK');var data = qualityScoreMap[keyword.getQualityScore()];if (data) {data.numKeywords++;data.totalImpressions += stats.getImpressions();data.totalClicks += stats.getClicks();data.totalCost += stats.getCost();data.totalConvertedClicks =+ stats.getConvertedClicks();
}}
this pulls in the total converted clicks into the column
![Page 60: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/60.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
KEYWORD PERFORMANCE REPORT
YAY, it worked!Now I’ve got to figure out how to speed up our account audit
processes!
![Page 61: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/61.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
EVENTUALLY I WANT TO AUTOMATE AUDITING
• Account set-up & settings
• SE Linked accounts audit My Business / Local Merchant Center Google Analytics Webmaster Tools
• Conversion tracking audit
• Goals & Events review
• Remarketing Audiences
• Shopping set-up
• Dynamic Search set-up
• Campaign settings & targeting
• Network settings & targeting
• Display settings & targeting
• Day Parting analysis
• Geo Targeting analysis
• Bid-modifier analysis
• Device Targeting analysis
• Ad delivery & rotation settings
• Ad extension audit
• Landing Page audit/analysis
• Campaign architecture
• Quality Score analysis
• Impression share analysis
• Keyword audit
• Negative keyword audit
• Match type audit
• Ad copy audit
• Display / Destination URL audit
• Missed Opportunity audit
• Performance audit
![Page 62: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/62.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
I LIKE THE ACCOUNT AUDIT SCRIPT BUT
IT WASN’T THE FORMAT I WANTED
![Page 63: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/63.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
I WANTED AN XLS SPREADSHEET
THAT COULD TRACK (AND MONITOR PROGRESS)
FOR ALL CLIENT ACCOUNTS
![Page 64: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/64.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
BUT FOR NOW… USE THE ACCOUNT AUDIT SCRIPT
AS A FRAMEWORKTO BUILD OUT THE MORE IN-DEPTH
AUDIT
![Page 65: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/65.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 1: MAPPING OUT WHAT THE SCRIPT DID
![Page 66: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/66.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 2: ORGANIZE WHAT DATA WE NEED
![Page 67: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/67.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 3: BREAK DOWN THE EXISTING SCRIPT INTO BITE SIZED PIECES
1. Campaign & Ad Group Names2. # of Keywords by Match Type & Negative3. Location Targeting Audit4. Extensions Audit5. Budget Audit
![Page 68: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/68.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 4: CREATE REUSABLE PIECES OF CODE
NESTING FUNCTIONS
DECIDE ON THE ORDER OF THE FUNCTIONS AND PULLING DATA
![Page 69: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/69.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 4: CREATE REUSABLE PIECES OF CODE
Create Header Rows within Spreadsheet
Start with Campaigns (because ad groups are within campaigns)
For Campaigns:Get Campaign NamesCalculate total KWDs & Negative KWDs
For Ad GroupsGet Ad Group NamesCalculate total KWDs & Negative KWDs
Push everything to the SpreadsheetLog 1 row per Campaign/Ad Group with Totals
![Page 70: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/70.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 5: WRITE THE REUSABLE PIECES OF CODE
http://bit.ly/PI-GetCMP http://bit.ly/PI-GetAG
CAMPAIGN ITERATOR AD GROUP ITERATORS
![Page 71: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/71.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
bit.ly/PI-SpreadsheetScript
STEP 5: WRITE THE REUSABLE PIECES OF CODE
PREP THE SPREADSHEET
![Page 72: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/72.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 5: WRITE/EDIT CODE
GET CAMPAIGN & AD GROUP DATA
![Page 73: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/73.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 5: WRITE/EDIT CODE
CREATE & WRITE TO GOOGLE DOC
![Page 74: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/74.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
STEP 5: WRITE/EDIT CODE
COUNT KEYWORDS BY MATCH TYPE
This is the original code from the audit doc
![Page 75: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/75.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
bit.ly/PI-KWDauditSCRIPT
STEP 6: PUT IT ALL TOGETHER
QA THE FINISHED PRODUCT
![Page 76: [Webinar] A Non-Coders Guide to AdWords Scripts](https://reader031.vdocuments.mx/reader031/viewer/2022021919/587de7da1a28abaf6b8b6c1d/html5/thumbnails/76.jpg)
@ChristiJOlson @SamuelDJames#PI_Scripts #AdWordsScripts
Questions?
Get in the Game: Social Advertising Video
Platforms
June 24th @ 11:00am
Register atpointit.co/1HjrmrH
A link to view a recorded version of the webinar will be emailed within 48 hours!
NEXT WEBINAR:
G