Skip to content

Instantly share code, notes, and snippets.

View siliconvallaeys's full-sized avatar

Frederick Vallaeys siliconvallaeys

View GitHub Profile
@siliconvallaeys
siliconvallaeys / Google Ads Experiment Dashboard (single account)
Last active February 3, 2020 23:51
Get a dashboard of all the experiments in a single Google Ads account
// Create a dashboard of Google Ads experiments in a Google spreadsheet
// -- Single account version
//
// Free AdWords Script courtesy of
// Optmyzr.com
// PPC tools, reports and scripts for Google, Bing, Facebook, and Amazon
//
// September 2019
/* instructions
@siliconvallaeys
siliconvallaeys / Google Ads Experiment Dashboard (MCC multi-account)
Last active July 28, 2022 08:40
Create a Google Ads Experiments dashboard for multiple accounts in an MCC
// Create a dashboard of Google Ads experiments in a Google spreadsheet
// -- MCC version
//
// Free AdWords Script courtesy of
// Optmyzr.com
// PPC tools, reports and scripts for Google, Bing, Facebook, and Amazon
//
// Aug 2021 (added line 92 so it will only pull active experiments)
// September 2019
@siliconvallaeys
siliconvallaeys / ETA vs RSA Query Report
Last active April 14, 2023 09:42
Compare performance of RSAs vs ETAs at the query level in an ad group to help decide which ad format is driving the best results
/******************************************
* ETA vs RSA Test
* @version: 1.0
* @author: Naman Jindal (Optmyzr)
* March 2, 2020
*******************************************/
var LOOKBACK_DAYS = 30; // Number of Days to look back for stats
var EMAILS = ['example@example.com']; // Array of Emails separated by comma
var CAMPAIGN_NAME_CONTAINS = ''; // Case Insensitive
// This simple script can be used in conjunction with Optmyzr's
// budget management scripts.
// uncomment either line 14 or 15 depending on whether you want to ADD or REMOVE the label
function main() {
var campaignIterator = AdsApp.campaigns().get();
Logger.log('Total campaigns found : ' +
campaignIterator.totalNumEntities());
while (campaignIterator.hasNext()) {
@siliconvallaeys
siliconvallaeys / PPC Data with Covid-19 measures
Created April 9, 2020 17:41
Plot PPC data with local COVID-19 measures
/******************************************
* Ad Performance With Covid Timeline
* @version: 1.0
* @author: Naman Jindal (Optmyzr)
* Event data courtsey epidemicforecasting.org used under the MIT license
********************************************/
// Select One Metric to plot on Chart from below
// 'Impressions','Clicks','Conversions','Cost','ConversionValue','Ctr','ConversionRate','AverageCpc'
@siliconvallaeys
siliconvallaeys / Geo Anomaly Detector for Google Ads
Last active March 9, 2022 20:21
Get an alert when performance in a particular location deviates from normal
/******************************************
* Geo Anomalies Report
* @version: 1.0
* @author: Naman Jindal and https://www.optmyzr.com
********************************************/
// ------------- USER DEFINED SETTINGS ---------------
var LAST_N_WEEKS = 8; // The number of weeks used to calculate the typical performance for the specific day of the week
var EMAILS = ['example@example.com']; // Array of emails (comma separated list)
@siliconvallaeys
siliconvallaeys / Percentage of unidentified search terms in Google Ads account
Last active September 15, 2020 21:52
Get a report about the percentage of a Google Ads account that has no data about the search terms responsible for impressions, clicks, or cost
/***************************************************
* Undefined Search Terms Report
* @version 1.1
* @author: Naman Jindal (Optmyzr)
****************************************************/
var LAST_N_DAYS = 30; // Number of previous days to include in report
var EMAILS = ['example@example.com']; // Array of Emails to be notified and given access to the results in a Google Sheet
var PRIMARY_METRIC = 'Cost'; // E.g. Impressions, Cost, Clicks
@siliconvallaeys
siliconvallaeys / Phrase and BMM Analysis
Last active May 25, 2021 16:25
Get an analysis related to the impact of Google Ads merging phrase match and broad match modified keywords in 2021
/*************************************************
* Analysis of the impact of Phrase Match and Broad Match Modified merging in Google Ads in 2021
* @author Naman Jindal <nj.itprof@gmail.com>
* For Optmyzr.com - Award Winning PPC Management Suite - Try it free for 2 weeks at www.optmyzr.com
* @version 1.0
***************************************************/
// Make your own copy of this spreadsheet
// then add the URL to the line below: https://swiy.io/phrase-bmm-template-spreadsheet
var URL = 'ENTER YOUR GOOGLE SPREADSHEET URL HERE';
@siliconvallaeys
siliconvallaeys / BMM and Phrase Match Change Analysis - MCC version
Last active February 17, 2021 00:50
Find out how much your account may be impacted by Google's match type changes in Feb 2021 - MCC version
/*************************************************
* Analysis of the impact of Phrase Match and Broad Match Modified merging in Google Ads in 2021
* @author Naman Jindal <nj.itprof@gmail.com>
* For Optmyzr.com - Award Winning PPC Management Suite - Try it free for 2 weeks at www.optmyzr.com
* @version 1.0
***************************************************/
// Make your own copy of this spreadsheet
// then add the URL to the line below: https://swiy.io/phrase-bmm-template-spreadsheet
var URL = 'ENTER YOUR GOOGLE SPREADSHEET URL HERE';
@siliconvallaeys
siliconvallaeys / set tROAS by Min Temp
Created February 15, 2022 00:11
Change a Google Ads tROAS for a campaign based on temperature
function main() {
var units = "metric"; // imperial or metric
var lat = "37.384998";
var lon = "-122.106689";
var openWeatherAPIKey = "7d5883a423a025b9bf565291147115b4"; // get your own key for the One Call API from https://openweathermap.org/api
var campaignName = 'Search: Executive Summary Report'; // put your campaign name here
var bidAdjustment = 1.5; // this is the scaling factor of the current tROAS