Google AdWords ahora se llama Google Ads. Este nuevo nombre refleja toda la gama de opciones publicitarias que ofrecemos en las redes de Búsqueda y de Display, en YouTube y en muchos otros sitios y plataformas web. Más información

152 anunciantes en línea
152 anunciantes en línea
Conoce las mejores practicas para el uso del Editor de AdWords e intercambia consejos y trucos acerca de cómo administrar mejor tus campaña y gestionar todos los distintos tipos de anuncios.
Guiame
favorite_border
Responder

Script en Adwords de revisión de urls

Estudiante ✭ ✭
# 1
Estudiante ✭ ✭

Hola a todos, 

 

El lunes implementé en mi cuenta un script de revisión de urls diaria que cogí de este post de la comunidad: https://www.es.advertisercommunity.com/t5/Articulos-de-Usuarios/Secuencias-de-Comandos-Scripts-Revis...

 

La cuestión es que hay algo que estoy haciendo que no termina de funcionar. El script en teoría lo que hace es revisar las urls y les pone una etiqueta de revisado. Cuando revisa todas, manda un email y después quita las etiquetas para que al día siguiente lo vuelva a hacer.

Cuando lo ejecuto no me da errores pero en ningún momento me llega el email ni se quitan las etiquetas de revisado. 

¿Alguien me echa una mano?

Muchas gracias por adelantado! 

 

Os dejo el script: 

 

function main() {
var is_error = 0;

// Comenzamos revisando si existen las etiquetas que vamos a utilizar para
// clasificar a los anuncios: "Revisado" y "Error_Pagina_Destino"
// cuando el script revisa un anuncio, le pone "Revisado" y cuando
// le encuentra un error, le pone "Error_Pagina_Destino".
// Si no existen, las crea.


var CheckedExist = AdWordsApp.labels()
.withCondition("Name = 'Revisado'")
.get();
var LandingErrorExist = AdWordsApp.labels()
.withCondition("Name = 'Error_Pagina_Destino'")
.get();
if (CheckedExist.hasNext() && LandingErrorExist.hasNext()){} else {
AdWordsApp.createLabel("Error_Pagina_Destino");
AdWordsApp.createLabel("Revisado");
}

// esta opción es técnica, sobre autenticaciones
var options =
{
"muteHttpExceptions" : true
};

// aquí ponemos el texto que, si está en la página, la vamos a considerar
// un error. Ejemplos: "sin stock", "no hemos encontrado lo que buscas".

var SiLaPaginaTieneEsteTextoEsError = "LA PÁGINA SOLICITADA YA NO ESTÁ EN NUESTRA NUEVA WEB" ;
var SiLaPaginaTieneEsteTextoEsErrorPt = "ESTA PÁGINA NÃO ESTÁ DISPONÍVEL";


// Armamos el selector de anuncios, solamente activos en
// grupos de anuncios activos.

var adSelector = AdWordsApp.ads()
.withCondition("Status = ENABLED")
.withCondition("CampaignStatus = ENABLED")
.withCondition("AdGroupStatus = ENABLED")

// Ponemos también como condición no revisar los grupos de anuncios ya revisados.
// Esto es útil porque en cuentas grandes el tiempo límite del script puede no
// llegar a revisar todos los anuncios de una sola pasada.
// Cuando todos los anuncios están revisados, abajo ejecutamos un restablecedor
// que les quita la etiqueta "Revisado" a todos para volver a empezar.

.withCondition("LabelNames CONTAINS_NONE ['Revisado']")
;

var adIterator = adSelector.get();
if (adIterator.hasNext()) {
while(adIterator.hasNext()) {

// Cuestión técnica de tiempo de ejecución de script, no hace falta tocar.

var remainingTime = AdWordsApp.getExecutionInfo().getRemainingTime();
//Logger.log("Tiempo restante en segundos: "+remainingTime);
if ( remainingTime < 30) {return;} else {

// Extraemos los atributos del anuncio (Campaña, Grupo de Anuncios, ID, URL de destino)

var ad = adIterator.next();
var adCampaign = ad.getCampaign();
var adAdGroup = ad.getAdGroup();
var adId = ad.getId();
var urlToTest = ad.urls().getFinalUrl();
if(urlToTest == null || urlToTest == ''){
Logger.log('Saltando: '+adCampaign);
continue;
}

//Logger.log("Testeando la URL "+urlToTest+" del anuncio del grupo "+adAdGroup+" campaña "+adCampaign);
var response = UrlFetchApp.fetch(encodeURI(urlToTest), options);

// Si la página está OK, el código HTTP es "200". Si es diferente, es error.

//Logger.log(ad.urls().getFinalUrl() + " response = " + response.getHeaders() + " code = " + response.getResponseCode());
if(response != undefined) {
var responseCode = response.getResponseCode();
if(responseCode == 200){

// Revisa si la página tiene el texto que configuramos como error

var responseText = response.getContentText();
if(responseText != "") {
if(responseText.indexOf(SiLaPaginaTieneEsteTextoEsError) != -1 || responseText.indexOf(SiLaPaginaTieneEsteTextoEsErrorPt) != -1) {
var is_error = (is_error + 1);
Logger.log("Pausando el anuncio:" + adId);
ad.pause();
ad.applyLabel("Error_Pagina_Destino");
}

// Si no hay error, le pone la etiqueta "Revisado"

else {
ad.applyLabel("Revisado");
ad.removeLabel("Error_Pagina_Destino");
}
}
} else if (responseCode == 404){
var is_error = (is_error + 1);
Logger.log("Pausando el anuncio:" + adId + " (error 404)");
ad.pause();
ad.applyLabel("Error_Pagina_Destino");
}
else {
Logger.log(responseCode);
ad.applyLabel("Revisado");
ad.removeLabel("Error_Pagina_Destino");
}
}
}}
}

// Si todo salió bien, nos enviamos un e-mail a nosotros (o a quienes queramos)

else {
MailApp.sendEmail("miemail@mail.com", "Revisadas todas las páginas de destino", "Volviendo a comenzar el chequeo.")

// Como ya están revisadas todas las páginas de destino, quitamos las etiquetas
// de "Revisado" para que, en la próxima ejecución, vuelva a comenzar la revisión.

var adReseter = AdWordsApp.ads().get();
while (adReseter.hasNext() ) {
var adToReset = adReseter.next();
adToReset.removeLabel("Revisado");
Logger.log('finalizado')

}
}

// En cambio, si hubo errores, nos enviamos un e-mail anunciando.

if (is_error > 0) {
MailApp.sendEmail("miemail@mail.com", "Páginas de destino con errores", "Hubo " + is_error + " anuncios que reportaron errores. Revisar http://adwords.google.com para más información.")
}
}

 

Expertos respondieronverified_user

Script en Adwords de revisión de urls

Colaborador Principal
# 2
Colaborador Principal

Seguramente el propio @AlanDaitch te pueda ayudar!

 

Saludos!


Mai Molina

Twitter @MaiMolina_
Senior PPC en korentia.com

Re: Script en Adwords de revisión de urls

Usuario Destacado
# 3
Usuario Destacado

Hola @Lucía C,

 

Cambia la función Mail.App.SenEmail de la línea 120 y 137 del código por estas.

 

 

Cambiar Línea 120 

MailApp.sendEmail("miemail@mail.com", "Revisadas todas las páginas de destino", "Volviendo a comenzar el chequeo.")

MailApp.sendEmail({to: 'miemail@mail.com', subject: 'Revisadas todas las páginas de destino', htmlBody:'Volviendo a comenzar el chequeo'})

 

Línea 137

MailApp.sendEmail("miemail@mail.com", "Páginas de destino con errores", "Hubo " + is_error + " anuncios que reportaron errores. Revisar http://adwords.google.com para más información.")

MailApp.sendEmail({to: 'miemail@mail.com', subject: 'Páginas de destino con errores', htmlBody:'Hubo ' + is_error + ' anuncios que reportaron errores. Revisar http://adwords.google.com para más información.'})

 

 

Como la función MailApp provoca un error de ejecución el Script se para y no continua con el proceso. 

 

Espero que te sirva de ayuda.

 

Un saludo ;-)

 

Marcelo Fernández
Experto Google AdWords

Script en Adwords de revisión de urls

Estudiante ✭ ✭
# 4
Estudiante ✭ ✭

Hola @MarceloFdez

 

Muchas gracias por tu respuesta; he hecho el cambio en el script y sigo igual...ni me llega el email ni se quitan las etiquetas de "revisado". Algo debe de estar pasando pero no lo acabo de ver. 

 

Mi problema es que muchas de las palabras clave de mis campañas aterrizan en la ficha de producto debido a que son búsquedas por referencia y la conversión es mucho mejor. La cuestión que me preocupa es que muchas veces se descatalogan los productos y la ficha deja de estar activa pero debido al  gran volumen de productos que tenemos (más de 200k) necesito saber de alguna manera automática si alguna kw está aterrizando en un sitio erróneo. 

Cogí esté script porque me parecía muy interesante lo de las etiquetas pero si conocéis algún otro y lo podéis compartir conmigo (o alguna web donde poder ver más scripts) os estaría eternamente agradecida.

 

De todas maneras, millones de gracias por tu respuesta