5. Introduction
● Way to programmatically access AdWords data
● Write your code in JavaScript
● Embedded IDE in AdWords UI
AdWords API Workshops – All rights reserved
6. Common use cases
● Quick one-time tools
● Highly customized reporting
● Account alerts
● External feed-based triggers
AdWords API Workshops – All rights reserved
8. Capabilities
● Can access important AdWords types
○ Campaigns, Ad groups, Keywords, Ads, ad
extensions, reports…
● API-specific types
○ Ad Params
● Types not yet available in AdWords API
○ Labels
● No beta restriction
AdWords API Workshops – All rights reserved
9. Capabilities (cont’d)
● IDE with autocomplete and syntax highlighting
● Run normally or in preview mode
○ Preview mode won’t make any changes to your accounts
○ Will perform actions like sending email, updating
spreadsheets, etc.
● Uses OAuth 2.0 for authentication
○ Up to 250 scripts per login email.
AdWords API Workshops – All rights reserved
10. Capabilities (cont’d)
● Scripts can be automated
○ Can be scheduled to execute periodically on your behalf
○ As frequently as every hour.
● Can talk to external data sources
○
○
○
○
Fetch arbitrary URLs
Interact with Google Drive
Interact with Google Spreadsheets
Send emails
AdWords API Workshops – All rights reserved
11. Capabilities (cont’d)
● Simplified APIs
● Requires lesser amount of code than AdWords API.
● E.g. simplified feed services…
AdWords API Workshops – All rights reserved
14. Creating your first script (cont’d)
AdWords API Workshops – All rights reserved
15. First script - retrieve all campaigns
function main() {
// Get all campaigns.
var campaignIterator = AdWordsApp.campaigns().get();
// iterate the list and print names to logger window.
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
Logger.log(campaign.getName());
}
}
AdWords API Workshops – All rights reserved
AW SCRIPT
16. Retrieving and updating objects
function main() {
// Retrieve campaign by name using AWQL.
var demoCampaign = AdWordsApp.campaigns().
withCondition("Name='Demo campaign'").get().next();
// Retrieve child adgroup using AWQL.
var demoAdGroup = demoCampaign.adGroups().
withCondition("Name='Demo adgroup'").get().next();
// Modify the adgroup properties.
demoAdGroup.setKeywordMaxCpc(1.2);
}
AdWords API Workshops – All rights reserved
AW SCRIPT
17. Reporting
function main() {
AW SCRIPT
// Run an account performance report
var report = AdWordsApp.report("SELECT Clicks, Impressions, " +
"Cost, AverageCpc, Date FROM ACCOUNT_PERFORMANCE_REPORT " +
"DURING LAST_WEEK");
// Retrieve the spreadsheet to export values to.
var SPREADSHEET_URL = "xxx";
var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL);
var sheet = spreadsheet.getSheetByName(
"Account performance report");
AdWords API Workshops – All rights reserved
18. Reporting - cont’d
// Export the report to spreadsheet
report.exportToSheet(sheet);
// Send out an email with the spreadsheet link
MailApp.sendEmail("john_hancock@google.com",
"Account performance report is ready!",
"Access it at " + SPREADSHEET_URL);
}
AdWords API Workshops – All rights reserved
AW SCRIPT
20. Documentation and code snippets
● Refer to the documentation
○ https://developers.google.com/adwords/scripts/
● Refer to our code snippets
○ Accessible from the IDE
○ Also available on documentation site
AdWords API Workshops – All rights reserved
21. Ask on our forum!
● Ask on our forum
○ https://groups.google.com/forum/#!forum/adwords-scripts
○ Ask for general questions, code snippets, complete solutions,
feature requests…
○ Lots of helpful developers and Scripts team members!
AdWords API Workshops – All rights reserved
22. Complete solutions
● Ready-to-use complete solutions
○
○
○
○
https://developers.google.com/adwords/scripts/docs/solutions/
Ready-to-use as provided
Customize if required
Multiple categories - customized reporting, bidding tools…
● Scripts from third party developers
○ http://www.freeadwordsscripts.com/
AdWords API Workshops – All rights reserved
26. Appendix 1 - Create sitelinks
var sitelink = AdWordsApp.extensions()
.newSitelinkBuilder()
.withLinkText("Hello world")
.withLinkUrl("http://www.example.com")
.create();
AdWordsApp.campaigns()
.withIds(['178532656'])
.get().next()
.addSitelink(sitelink);
AdWords API Workshops – All rights reserved
AW SCRIPT
27. Appendix 2 - Read AdParams
//interator on keywords
var kwIter = AdWordsApp.keywords().get(); //this is long, select campaign first
while (kwIter.hasNext()) {
//iterator on parameter of the current keyword
var adParamIter = kwIter.next().adParams().get();
while (adParamIter.hasNext()) {
var adParam = adParamIter.next();
Logger.log("campaign="+ adParam.getAdGroup().getCampaign().getName()+
" AdGroup="+ adParam.getAdGroup().getName()+
" KW=" + adParam.getKeyword().getText() +
" idx=" + adParam.getIndex() +
" value=" + adParam.getInsertionText());
}
}
AdWords API Workshops – All rights reserved
AW SCRIPT