Es apasionante poder gestionar campañas de adwords internacionales, competir en mercados «lejanos» o no tanto y retar tu conocimiento a otros players internacionales es una situación más que excitante.
Gracias a esta experiencia internacional nos surgió la siguiente duda:
Si tengo mi cuenta de adwords configurada en Euros y estoy participando en el mercado de USA, donde mis competidores probablemente estén pujando en Dólares USA y vete a saber si otros competidores estan pujando en moneda canadiense, mexicana,… ¿cómo hace google para unificar la moneda con la que todos jugamos y así poder rankearnos?
Probablemente, la moneda patrón que utilicen sea el US$, no me extrañaría que tuviesen una moneda Googleliana y ellos mismos controlar sus propios tipos de cambio, pero si mantenemos la hipótesis de que la moneda patrón es el dólar, ¿cómo repercute en las pujas un descenso/aumento pronunciado del valor de una moneda?
Recientemente, hemos vivido una depreciación brutal del Euro, su tipo de cambio respecto al dólar ha descendido considerablemente. Imaginemos una devaluación del 10%, ¿me estás diciendo que mi puja en Adwords se ha devaluado también? ¿me estás diciendo que estoy sobrepujando si mi moneda se revaloriza frente al dólar y estoy consiguiendo posiciones mejores, no por mi buen trabajo con el Quality Score, si no por un simple cambio de moneda?
El Forex (mercado global de compra-venta de divisas, llamado también FX), nos permite controlar este flujo entre diferentes monedas, de manera que nos puede proporcionar en tiempo real el tipo de cambio de nuestra moneda respecto el Dolar Americano.
Hemos creado el siguiente script directamente para controlar este flujo de moneda, obteniendo la moneda configurada por defecto en adwords y buscando el cambio actual en USD obteniendo de esta manera el tipo de cambio actual y modificando nuestra puja para igualar nuestra moneda al mercado en el que estamos invirtiendo. De esta manera, aumentaremos o bajaremos nuestra puja según las oscilaciones de nuestra moneda, sea cual sea, con el dólar.
Usamos el siguiente spreadsheet como base de datos para poder guardar el tipo de cambio entre horas y poder dar un valor porcentual de modificación a Adwords según la diferencia de tipo de cambio entre horas.
Para ello, empezamos el programa realizando una pregunta. ¿Cual es la configuración de nuestra moneda? Esta pregunta es esencial ya que es la base del cambio de la moneda.
Para ello, preguntamos directamente que nos devuelva la moneda y para asegurarnos, lo mostramos por consola:
[code lang=»js»]
var myCurrency = getCurrency();
Logger.log(‘moneda: ‘ + myCurrency);
[/code]
Siguiente paso lógico, saber el tipo de cambio de nuestra moneda a Dolares Americanos (USD). Para ello, generamos una función que nos permita enviar nuestro tipo de moneda y nos devuelva el tipo de cambio actual respecto al Dolar mediante Forex.
Llamada al método:
[code lang=»js»]
var exchange = getExchange(myCurrency);
Logger.log(‘cambio: ‘ + exchange);
[/code]
La función realiza la llamada pasando previamente el tipo de moneda inicial y el tipo de moneda final que se quiere realizar:
[code lang=»js»]
function getExchange(myC){
var toC = "USD";
var amount = 1;
var url = Utilities.formatString("http://rate-exchange.appspot.com/currency?from="+myC+"&to="+toC+"&q="+amount+"");
var response = UrlFetchApp.fetch(url);
var object = JSON.parse(response.getContentText());
var e = object.v;
return e;
}
[/code]
Para tener un control y saber el cambio que se produce a cada hora, se decidió usar un spreadsheet de google drive como base de datos. Este spreadsheet lo podéis encontrar aquí y lo que nos proporciona inicialmente es una tabla de posibles monedas, donde se guardará el cambio de moneda anterior y el cambio de moneda actual.
Para ello, generamos una llamada a la función de la siguiente manera:
[code lang=»js»]
var difMoneda = getModSpread(myCurrency,exchange);
Logger.log(‘% cambio: ‘ + difMoneda);
[/code]
La función del speadsheet:
[code lang=»js»]
function getModSpread(myC,e){
var spreadsheet = SpreadsheetApp.openById("1ToS0WjQfx34mFbgMCfLGjSP8UD8qOJpwCWRWpENbmnI");
var sheet = spreadsheet.getActiveSheet();
var fila = 1;
var columna = 1;
var trobat = false;
var lastColumn = sheet.getLastColumn();
var lastFile = sheet.getLastRow()+1;
//Buscamos la fila donde está nuestra moneda
do{
var contenido = sheet.getRange(fila,columna);
if(contenido.getValue() != myC){
fila++;
if (fila == lastFile){
trobat = true;
fila = "no trobat";
}
}
else{
trobat = true;
}
}while(trobat == false);
Logger.log(‘fila moneda: ‘ + fila);
//mirem si (fila,columna+1)=="" –> si es igual, es nou.
if (fila != "no trobat"){
if (sheet.getRange(fila,columna+1).getValue()==""){
sheet.getRange(fila,columna+1).setValue(myC);
sheet.getRange(fila,columna+2).setValue(e);
sheet.getRange(fila,columna+3).setValue(e);
Logger.log(‘entra al if’ + sheet.getRange(fila,columna+1).getValue());
}
else{
sheet.getRange(fila,columna+2).setValue(sheet.getRange(fila,columna+3).getValue());
sheet.getRange(fila,columna+3).setValue(e);
}
var diferenciaMoneda = sheet.getRange(fila,columna+4).getValue();
return diferenciaMoneda;
}
}
[/code]
Finalmente, ya sólo nos falta filtrar las campañas/grupos de anuncio/palabras clave y aplicar el cambio.
Para ello, tal y como se ha realizado en todo el programa, llamamos a una función para que realice el cambio siempre y cuando, tengamos una diferencia en el cambio de moneda:
[code lang=»js»]
if (difMoneda !=0){
var aumento = getAumento(difMoneda);
Logger.log(‘aumento: ‘ + aumento + myCurrency);
}
else{
var aumento = 0;
Logger.log(‘aumento = 0. No hay diferencia de cambio’);
}
[/code]
Y generamos el cambio a las palabras clave mediante la función:
[code lang=»js»]
function getAumento(difMoneda){
var campaignsIterator = AdWordsApp.campaigns()
.withCondition("Status = ENABLED")
.get();
while (campaignsIterator.hasNext()) {
var campaign = campaignsIterator.next();
Logger.log(‘Campaña: ‘ + campaign);
var adGroupsIterator = AdWordsApp.adGroups()
.withCondition("Status = ENABLED")
.get();
while (adGroupsIterator.hasNext()) {
var adGroup = adGroupsIterator.next();
Logger.log(‘Adgroup: ‘ + adGroup);
var keywordsIterator = AdWordsApp.keywords()
.withCondition("Status = ENABLED")
.get();
while (keywordsIterator.hasNext()) {
var keyword = keywordsIterator.next();
Logger.log(‘Keyword: ‘ + keyword);
Logger.log(‘difMoneda: ‘ + difMoneda);
var maxCpcIni = keyword.getMaxCpc();
Logger.log(‘maxCpcIni: ‘ + maxCpcIni);
keyword.setMaxCpc(keyword.getMaxCpc() * difMoneda);
var maxCpcFin = keyword.getMaxCpc();
Logger.log(‘maxCpcFin: ‘ + maxCpcFin);
var aumento = aumento + (maxCpcIni – maxCpcFin);
Logger.log(‘aumento: ‘ + aumento);
}
}
}
return aumento;
}
[/code]
Con esto, tenemos nuestro pequeño programa de conversión de cualquier moneda configurada en Google Adwords a Dolar Americano.
Puedes descargarte el programa en formato txt aquí.