Cuando iniciamos una campaña en google adwords, lo primero será identificar qué palabras claves me están conveniendo en mi campaña que me generan no sólo clicks si no conversiones de clientes potenciales, es por ello que si bien cuando todavía no tenemos un historial grande, google podrá recomendarnos algunas palabras clave que nos puedan funcionar pero igual habrá muchísimas que no nos convengan y sólo serán motivo de inversión inútil, claro testear e ir optimizando es una opción, pero ¿habrá alguna forma de hacer ésto en automático?, la respuesta es sí y una gran ayuda son los scripts.

Los scripts son secuencias de comando ó códigos programados en Javascript que nos permiten tomar datos de internet de nuestra cuenta y realizar acciones basadas en estos datos. Google nos ofrece algunos ya hechos y que nos pueden ayudar, otros podemos hacerlos o programarlos de acuerdo a nuestros intereses.

Si bien AdWords recomienda el uso de scripts para quienes tienen cuentas grandes, con decenas o centenas de grupos de anuncios, también puede ser recomendable para cuentas chicas, debido a que nos facilitará mucho tener más tiempo libre para realizar optimizaciones y tener parámetros bien configurados para poder escalar la cuenta el día en que lo definamos, aumentando la inversión asegurándonos una tasa de conversión más estable y tener tiempo como para poder administrarla.

Por otro lado todos los scripts oficiales de Google no están actualizados también hay muchos blogs que ofrecen scripts y tampoco están actualizados por eso se recomienda que un programador te desarrolle los scripts a medida.

Veamos:

¿Cómo podemos configurar un scripts para palabras clave en la nueva plataforma de adwords?

El primer paso será entrar en tu cuenta de google adwords:

1)Entras a tu cuenta y en la nueva plataforma de adwords vas arriba a herramientas y en acciones en bloque marcas secuencias de comandos.

Pasos para la configuración de scripts en google nueva plataforma

 

2)Una vez dentro de la secuencia de comandos marcas añadir

3)Una vez dentro de la secuencia de comandos de la nueva plataforma de google adwords tienes que autorizar con la cuenta que elijas o tengas en google adwords.

 

4)Luego de autorizar vas a pegar el script que vayas a utilizar desde la línea 1, reemplazando por completo el código que pone por defecto Google Adwords.

5)No olvides ponerle un nombre, guardar y cerrar y volver a la pantalla anterior, donde tendrás que crear una programación para tu script.Tu eliges si quieres que se ejecute cada hora, cada día, cada semana o cada mes. De esta forma le estás especificando a Google Adwords con que periodicidad se va a ejecutar tu script.

 

El Scripts

Este scripts lo puedes configurar a tu gusto

Las condiciones

Puedes editar así:

 

  // Vamos a considerar que una palabra clave tiene una buena performance si
  // su CTR es mayor a 2%, y su nivel de calidad es más alto que 7.
  var keywordsIterator =AdWordsApp.keywords()
      .withCondition("Ctr > 0.02")
      .withCondition("QualityScore > 7")
      .forDateRange("LAST_WEEK")
      .get();

Nótese que siempre podemos hacer comentarios en nuestros scripts para recordar cómo funcionan y qué hacemos. Esto se hace simplemente comenzando cualquier línea con una doble barra //

segunda parte del script:

 

while(keywordsIterator.hasNext()){
    var keyword = keywordsIterator.next();
    // Aumentar la oferta en 5%.
    keyword.setMaxCpc(keyword.getMaxCpc()*1.05);

Las 2 primeras líneas indican simplemente que mientras haya keywords que cumplan con la condición, se les aplique el cambio de la última línea: keyword.setMaxCpc define el máximo CPC por palabra clave.

EL SCRIPT

// Copyright 2015, Google Inc. 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
//
//     http://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.

/**
* @name Keyword Labeler
*
* @overview The Keyword Labeler script labels keywords based on rules that
*     you define. For example, you can create a rule to label keywords that
*     are underperforming. Later, you can filter for this label in AdWords
*     to decide whether to pause or remove those keywords. Rules don’t have
*     to be based solely on a keyword’s performance. They can also be based
*     on properties of a keyword such as its text or match type. For example,
*     you could define “branded” keywords as those containing proper nouns
*     associated with your brand, then label those keywords based on
*     different performance thresholds versus “non-branded” keywords.
*     Finally, the script sends an email linking to a spreadsheet when new
*     keywords have been labeled. See
*     https://developers.google.com/adwords/scripts/docs/solutions/labels
*     for more details.
*
* @author AdWords Scripts Team [adwords-scripts@googlegroups.com]
*
* @version 1.1.2
*
* @changelog
* – version 1.1.2
*   – Added validation for external spreadsheet setup.
* – version 1.1.1
*   – Improvements to time zone handling.
* – version 1.1
*   – Modified to allow generic rules and labeling.
* – version 1.0
*   – Released initial version.
*/

var CONFIG = {
// URL of the spreadsheet template.
// This should be a copy of https://goo.gl/opviBb.
SPREADSHEET_URL
: ‘YOUR_SPREADSHEET_URL’,

// Array of addresses to be alerted via email if labels are applied.
RECIPIENT_EMAILS
: [
‘YOUR_EMAIL_HERE’
],

// Selector conditions to apply for all rules.
GLOBAL_CONDITIONS
: [
‘CampaignStatus = ENABLED’,
‘AdGroupStatus = ENABLED’,
‘Status = ENABLED’
],

// Default date range over which statistics fields are retrieved.
// Used when fetching keywords if a rule doesn’t specify a date range.
DEFAULT_DATE_RANGE
: ‘LAST_7_DAYS’
};

/**
* Defines the rules by which keywords will be labeled.
* The labelName field is required. Other fields may be null.
* @type {Array.<{
*     conditions: Array.<string>,
*     dateRange: string,
*     filter: function(Object): boolean,
*     labelName: string,
*   }>
* }
*/

var RULES = [
{
conditions
: [
‘Ctr < 0.02’,
‘AverageCpc > 1’,
],
filter
: function(keyword) {
var brands = [‘Product A’, ‘Product B’, ‘Product C’];
var text = keyword.getText();
for (var i = 0; i < brands.length; i++) {
if (text.indexOf(brand[i]) >= 0) {
return true;
}
}
return false;
},
labelName
: ‘Underperforming Branded’
},

{
conditions
: [
‘Ctr < 0.01’,
‘AverageCpc > 2’,
],
labelName
: ‘Underperforming’
}
];

function main() {
validateEmailAddresses
();
var results = processAccount();
processResults
(results);
}

/**
* Processes the rules on the current account.
*
* @return {Array.<Object>} An array of changes made, each having
*     a customerId, campaign name, ad group name, label name,
*     and keyword text that the label was applied to.
*/

function processAccount() {
ensureAccountLabels
();
var changes = applyLabels();

return changes;
}

/**
* Processes the results of the script.
*
* @param {Array.<Object>} changes An array of changes made, each having
*     a customerId, campaign name, ad group name, label name,
*     and keyword text that the label was applied to.
*/

function processResults(changes) {
if (changes.length > 0) {
var spreadsheetUrl = saveToSpreadsheet(changes, CONFIG.RECIPIENT_EMAILS);
sendEmail
(spreadsheetUrl, CONFIG.RECIPIENT_EMAILS);
} else {
Logger.log(‘No labels were applied.’);
}
}

/**
* Retrieves the names of all labels in the account.
*
* @return {Array.<string>} An array of label names.
*/

function getAccountLabelNames() {
var labelNames = [];
var iterator = AdWordsApp.labels().get();

while (iterator.hasNext()) {
labelNames
.push(iterator.next().getName());
}

return labelNames;
}

/**
* Checks that the account has a label for each rule and
* creates the rule’s label if it does not already exist.
* Throws an exception if a rule does not have a labelName.
*/

function ensureAccountLabels() {
var labelNames = getAccountLabelNames();

for (var i = 0; i < RULES.length; i++) {
var labelName = RULES[i].labelName;

if (!labelName) {
throw ‘Missing labelName for rule #’ + i;
}

if (labelNames.indexOf(labelName) == 1) {
AdWordsApp.createLabel(labelName);
labelNames
.push(labelName);
}
}
}

/**
* Retrieves the keywords in an account satisfying a rule
* and that do not already have the rule’s label.
*
* @param {Object} rule An element of the RULES array.
* @return {Array.<Object>} An array of keywords.
*/

function getKeywordsForRule(rule) {
var selector = AdWordsApp.keywords();

// Add global conditions.
for (var i = 0; i < CONFIG.GLOBAL_CONDITIONS.length; i++) {
selector
= selector.withCondition(CONFIG.GLOBAL_CONDITIONS[i]);
}

// Add selector conditions for this rule.
if (rule.conditions) {
for (var i = 0; i < rule.conditions.length; i++) {
selector
= selector.withCondition(rule.conditions[i]);
}
}

// Exclude keywords that already have the label.
selector
.withCondition(‘LabelNames CONTAINS_NONE [“‘ + rule.labelName + ‘”]’);

// Add a date range.
selector
= selector.forDateRange(rule.dateRange || CONFIG.DEFAULT_DATE_RANGE);

// Get the keywords.
var iterator = selector.get();
var keywords = [];

// Check filter conditions for this rule.
while (iterator.hasNext()) {
var keyword = iterator.next();

if (!rule.filter || rule.filter(keyword)) {
keywords
.push(keyword);
}
}

return keywords;
}

/**
* For each rule, determines the keywords matching the rule and which
* need to have a label newly applied, and applies it.
*
* @return {Array.<Object>} An array of changes made, each having
*     a customerId, campaign name, ad group name, label name,
*     and keyword text that the label was applied to.
*/

function applyLabels() {
var changes = [];
var customerId = AdWordsApp.currentAccount().getCustomerId();

for (var i = 0; i < RULES.length; i++) {
var rule = RULES[i];
var keywords = getKeywordsForRule(rule);
var labelName = rule.labelName;

for (var j = 0; j < keywords.length; j++) {
var keyword = keywords[j];

keyword.applyLabel(labelName);

changes.push({
customerId
: customerId,
campaignName
: keyword.getCampaign().getName(),
adGroupName
: keyword.getAdGroup().getName(),
labelName
: labelName,
keywordText
: keyword.getText(),
});
}
}

return changes;
}

/**
* Outputs a list of applied labels to a new spreadsheet and gives editor access
* to a list of provided emails.
*
* @param {Array.<Object>} changes An array of changes made, each having
*     a customerId, campaign name, ad group name, label name,
*     and keyword text that the label was applied to.
* @param {Array.<Object>} emails An array of email addresses.
* @return {string} The URL of the spreadsheet.
*/

function saveToSpreadsheet(changes, emails) {
var template = validateAndGetSpreadsheet(CONFIG.SPREADSHEET_URL);
var spreadsheet = template.copy(‘Keyword Labels Applied’);

// Make sure the spreadsheet is using the account’s timezone.
spreadsheet
.setSpreadsheetTimeZone(AdWordsApp.currentAccount().getTimeZone());

Logger.log(‘Saving changes to spreadsheet at ‘ + spreadsheet.getUrl());

var headers = spreadsheet.getRangeByName(‘Headers’);
var outputRange = headers.offset(1, 0, changes.length);

var outputValues = [];
for (var i = 0; i < changes.length; i++) {
var change = changes[i];
outputValues
.push([
change
.customerId,
change
.campaignName,
change
.adGroupName,
change
.keywordText,
change
.labelName
]);
}
outputRange
.setValues(outputValues);

spreadsheet.getRangeByName(‘RunDate’).setValue(new Date());

for (var i = 0; i < emails.length; i++) {
spreadsheet
.addEditor(emails[i]);
}

return spreadsheet.getUrl();
}

/**
* Sends an email to a list of email addresses with a link to a spreadsheet.
*
* @param {string} spreadsheetUrl The URL of the spreadsheet.
* @param {Array.<Object>} emails An array of email addresses.
*/

function sendEmail(spreadsheetUrl, emails) {
MailApp.sendEmail(emails.join(‘,’), ‘Keywords Newly Labeled’,
‘Keywords have been newly labeled in your’ +
‘AdWords account(s). See ‘ +
spreadsheetUrl
+ ‘ for details.’);
}

/**
* DO NOT EDIT ANYTHING BELOW THIS LINE.
* Please modify your spreadsheet URL and email addresses at the top of the file
* only.
*/

/**
* Validates the provided spreadsheet URL and email address
* to make sure that they’re set up properly. Throws a descriptive error message
* if validation fails.
*
* @param {string} spreadsheeturl The URL of the spreadsheet to open.
* @return {Spreadsheet} The spreadsheet object itself, fetched from the URL.
* @throws {Error} If the spreadsheet URL or email hasn’t been set
*/

function validateAndGetSpreadsheet(spreadsheeturl) {
if (spreadsheeturl == ‘YOUR_SPREADSHEET_URL’) {
throw new Error(‘Please specify a valid Spreadsheet URL. You can find’ +
‘ a link to a template in the associated guide for this script.’);
}
var spreadsheet = SpreadsheetApp.openByUrl(spreadsheeturl);
return spreadsheet;
}

/**
* Validates the provided email address to make sure it’s not the default.
* Throws a descriptive error message if validation fails.
*
* @throws {Error} If the list of email addresses is still the default
*/

function validateEmailAddresses() {
if (CONFIG.RECIPIENT_EMAILS &&
CONFIG
.RECIPIENT_EMAILS[0] == ‘YOUR_EMAIL_HERE’) {
throw new Error(‘Please specify a valid email address.’);
}
}

Aquí hay otro para palabras negativas en conflicto.
Y aquí otro para determinar la mejor oferta para sus palabras clave
Dónde encontrar scripts para Adwords

Cada vez hay un mayor número de lugares en los que puedes encontrar diferentes scripts de Adwords. Algunos de ellos son:

  1. FreeAdWords Scripts. Se trata de la principal fuente online de scripts de Adwords gratuitos.
  2. Comunidad de Google Developers donde no sólo puedes encontrar códigos sino que puedes acceder a toda la información para generar tus propios scripts para Adwords.
  3. Optmyzr Scripts.
  4. Hero Pro Scripts Library. En este caso, para poder acceder a los scripts deberás pagar una cantidad que oscila de los 30 a los 300 dólares mensuales
Si desea que le ayudemos en su analítica web, y la medición y seguimiento de sus campañas publicitarias google adwords..CONTACTENOS

0 comentarios “¿Cómo saber programar qué palabras clave me están funcionando en adwords? Ayúdate con los Scripts”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Related Posts

Adwords

Ventajas de la publicidad online y de AdWords

Muchas son las ventajas de hacer publicidad online y sobre todo en google adwords, y es que la publicidad unida a una correcto plan de marketing son las piezas fundamentales. Adwords te permite mostrar tus Leer Más...

Adwords

El consumidor promedio pasa por al menos cinco puntos de contacto antes de la conversión

Hoy en día, el consumidor promedio pasa por un mínimo de cinco puntos de contacto con una empresa antes de la conversión. Y esto es solo el comienzo de la tendencia, ya que la cantidad Leer Más...

Adwords

¿Cómo subir los datos a analytics de tu CRM?

Es muy importante subir los datos de nuestros clientes y sí lo puedes hacer de forma manual en hojas de excel o de cálculo ó CSV y otra manera sería usar el API. También se Leer Más...