Skip to content

Instantly share code, notes, and snippets.

Avatar
👋

Russ Savage russorat

👋
View GitHub Profile
@russorat
russorat / mcc-ad-disaproval-reasons.js
Created May 30, 2014
This script will run through all your AdWords accounts and look for Ads that have been disapproved
View mcc-ad-disaproval-reasons.js
/********************************************************************************
* This script will run through all your AdWords accounts and look for Ads that
* have been disapproved
*
* @author Russell Savage <russellsavage@gmail.com>
* @version 1.0
* FreeAdWordsScripts.com
*
* THIS SOFTWARE IS PROVIDED BY Russell Savage ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
View account_level_qs.js
/************************************
* Store Account, Campaign, and AdGroup Level Quality Score
* Version 2.3
* ChangeLog v2.3
* - Solved #NUM! issue by filtering out -- values
* ChangeLog v2.2
* - Updated KeywordText to Criteria
* ChangeLog v2.1
* - Ignore negatives
* ChangeLog v2.0
@russorat
russorat / arris-scraper.py
Created Feb 20, 2020
modified version of arris-scraper.py that writes data into InfluxDB 2.0.
View arris-scraper.py
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
'''arris-scraper.py (c) 2019 Matthew J Ernisse <matt@going-flying.com>
All Rights Reserved.
Load the status page from an Arris/Motorola SB8200 modem, parses the
status page and loads the values into an InfluxDB database.
Redistribution and use in source and binary forms,
with or without modification, are permitted provided
@russorat
russorat / keyword_cleanup_full.js
Last active Jul 27, 2019
The full Keyword Cleanup Script from my SearchEngineLand.com post. Be sure to change the email on line 30. See the blog post for more details.
View keyword_cleanup_full.js
function main() {
var config_options = {
'default' : {
metric : 'Conversions', // This metric will be used for determining duds
threshold : 0, // Duds are less than or equal to this threshold
days_ago : 90, // The timeframe of the data to consider, days ago to yesterday
days_in_limbo : 5 // The script will warn you for this many days before deleting something
}
// If you want, you can add account specific configurations too. If an account specific config
// is not found, the default one from above is used.
@russorat
russorat / find_anomalies_script.js
Last active Apr 24, 2019
This is a version of the Find Anomalies in You Account script found here: http://goo.gl/IT1UcV
View find_anomalies_script.js
function Anomalies() {
/**************************************
* Find the Anomalies
* Created By: Russ Savage
* Version: 1.2
* Changelog v1.2
* - Fixed divide by 0 errors
* - Changed SIG_FIGS to DECIMAL_PLACES
* Changelog v1.1
* - Added ability to tag ad anomalies as well
View track_entity_creation_date.js
/**************************************
* Track Entity Creation Date
* Version 1.3
* Changelog v1.3
* - Updated script to handle all entities
* Changelog v1.2
*  - Fixed an issue with comparing dates
* ChangeLog v1.1
*  - Updated logic to work with larger accounts
* Created By: Russ Savage
@russorat
russorat / Manage_Ads_Using_Excel.js
Last active Apr 24, 2019
This AdWords Script will allow you to manage your Ads or Creatives using GDrive and Excel. For more details, check out http://savageautomation.com/manage-your-creatives-using-excel/
View Manage_Ads_Using_Excel.js
/******************************************
* Manage AdWords Ads Using Excel
* Version 1.0
* 2013-09-29
* Author: Russ Savage
* SavageAutomation.com
* http://savageautomation.com/?p=121
****************************************/
var FOLDER_PATH = 'AdWordsData'; //The path where the file will be stored on GDrive
var FILE_NAME = 'creatives.csv'; //The name of the file on GDrive
@russorat
russorat / generic_script_runner.js
Last active Apr 24, 2019
A generic AdWords script running framework.
View generic_script_runner.js
function main() {
//See http://goo.gl/KvINmD for an example spreadsheet.
var scriptConfigId = 'Your Spreadsheet Id Goes Here';
var sheet = SpreadsheetApp.openById(scriptConfigId).getActiveSheet();
var data = sheet.getRange('A:C').getValues();
for(var i in data) {
if(i == 0) { continue; }
var [description, location, classname] = data[i];
if(!location) { continue; }
Logger.log('Running "'+description+'" from location: '+location);
View updated_alpha_beta_kw_sync_script.js
/*******************************
* Automatically adds any new keywords in your
* Alpha campaigns as exact match negatives in
* the corresponding Beta campaign. Also handles
* pausing or removing keywords in your Alpha campaign
* and removing the corresponding negative in your Beta.
*******************************/
// Just as before, these strings will be
// used to identify your Alpha and Beta campaigns.
// This script assumes that your Alpha campaigns are
View AdWords_Scripts_Ad_Testing.js
/*********************************************
* Automated Creative Testing With Statistical Significance
* Version 2.1
* Changelog v2.1
*   - Fixed INVALID_PREDICATE_ENUM_VALUE
* Changelog v2.0
*   - Fixed bug in setting the correct date
*   - Script now uses a minimum visitors threshold
*        per Ad instead of AdGroup
*   - Added the ability to add the start date as a label to AdGroups