Ejemplos de scripts para administrar anuncios

En las siguientes secciones se muestran ejemplos de scripts que realizan diversas acciones contra los anuncios.

Nota:

  • Actualiza los anuncios de texto expandidos a anuncios de búsqueda de respuesta antes del 1 de febrero de 2023. Después de esta fecha, ya no podrás crear anuncios de texto expandido ni editar los existentes. Para obtener más información, consulta Acerca de los anuncios de búsqueda dinámicos.
  • Los anuncios de texto expandido existentes seguirán apareciendo y podrás seguir viendo informes sobre su rendimiento.
  • Aún podrás pausar, habilitar o quitar los anuncios de texto expandidos. De lo contrario, los intentos de agregar o actualizar anuncios de texto expandido producirán un CampaignServiceAdTypeInvalid error.
  • Más información sobre este cambio.

Agregar anuncios

Para agregar un anuncio, obtén primero el grupo de anuncios al que quieres agregar el anuncio. Usa el objeto AdGroupSelector para seleccionar el grupo de anuncios. El uso del método proporciona un withIds mejor rendimiento que pasar el nombre del grupo de anuncios en el withCondition método.

A continuación, llama al método newAd del grupo de anuncios para obtener un generador que uses para especificar las propiedades del anuncio. A diferencia de otros tipos de entidad, el newAd método devuelve un objeto AdBuilderSpace que contiene métodos para obtener el generador para el tipo de anuncio que quieres crear. En este ejemplo se agrega un anuncio de expandedTextAdBuilder texto expandido, por lo que se llama al método para obtener un generador de anuncios de texto expandido.

Para los anuncios de texto expandido, debes especificar las siguientes propiedades:

  • Description
  • Url final
  • Parte del titular1
  • Parte del titular 2

La combinación de estas propiedades define de forma única un anuncio de texto expandido. Las demás propiedades son opcionales.

Llamar al método del build generador crea el anuncio de forma asíncrona; Scripts agrega el anuncio en algún momento antes de que finalice el script o si llama a uno de los métodos de la operación de compilación. Para obtener información sobre este proceso, consulte ¿Qué es un constructor?

function main() {
    var adGroupId = "AD GROUP ID GOES HERE";
    var adGroup = getAdGroup(adGroupId);

    if (adGroup != null) {

        // Get an expanded text ad builder, specify the ad's 
        // properties, and add the ad to the build queue.
        var operation = adGroup.newAd().expandedTextAdBuilder()
            .withDescription("AD COPY GOES HERE")
            .withFinalUrl("https://contoso.com")
            .withHeadlinePart1("AD TITLE PART 1 GOES HERE")
            .withHeadlinePart2("AD TITLE PART 2 GOES HERE")
            .build();

        if (!operation.isSuccessful()) {
            for (var error of operation.getErrors()) {
                Logger.log(error);
            }
        }
    }
    else {
        Logger.log(`Failed to get ad group, ${adGroupId}.`);
    }
}

function getAdGroup(id) {
    var adGroups = AdsApp.adGroups()
        .withIds([id])
        .get();

    if (adGroups.hasNext()) {
        return adGroups.next();
    }
    else {
        return null;
    }
}

Si existe un anuncio agregado anteriormente con los mismos valores para la combinación de campos obligatorios, el servicio no agrega el anuncio, sino que devuelve el anuncio y el identificador agregados anteriormente. Sin embargo, si los mismos anuncios se procesan en la misma cola de compilación, se produce un error en el segundo anuncio con CampaignServiceDuplicateAd. Por ejemplo, como los anuncios del ejemplo siguiente son los mismos, uno de ellos da error.

    if (adGroup != null) {
        var adOperation = adGroup.newAd().expandedTextAdBuilder()
            .withDescription("ad copy")
            .withFinalUrl("https://contoso.com")
            .withHeadlinePart1("title part 1")
            .withHeadlinePart2("title part 2")
            .build();

        operations.push(adOperation);

        adOperation = adGroup.newAd().expandedTextAdBuilder()
            .withDescription("ad copy")
            .withFinalUrl("https://contoso.com")
            .withHeadlinePart1("title part 1")
            .withHeadlinePart2("title part 2")
            .build();

        operations.push(adOperation);
        
        for (var operation of operations) {
            if (!operation.isSuccessful()) {
                for (var error of operation.getErrors()) {
                    Logger.log(error);
                }
            }
        }
    }

Obtener anuncios

Tienes varias opciones para obtener anuncios en función de dónde te encuentres en la jerarquía.

Obtener anuncios de un grupo de anuncios

Si tienes un objeto AdGroup , llama al método del objeto ads para obtener la lista de anuncios que pertenecen al grupo de anuncios. En este ejemplo se obtienen e imprimen todos los anuncios del grupo, pero se pueden usar los métodos del selector de anuncios para filtrar la lista de anuncios.

function main() {
    var adGroups = AdsApp.adGroups()
        .withIds(["AD GROUP ID GOES HERE"])
        .get();

    if (adGroups.hasNext()) {
        var adGroup = adGroups.next();

        var ads = adGroup.ads().get();
        
        while (ads.hasNext()) {
            var ad = ads.next();

            if (ad.isType().expandedTextAd()) {
                var expandedAd = ad.asType().expandedTextAd();
            }
        }
    } 
}

Obtener anuncios de una campaña

Si tienes un objeto Campaña , llama al método del objeto ads para obtener la lista de anuncios que pertenecen a los grupos de anuncios de la campaña. En este ejemplo se usa el método del withCondition selector de anuncios para filtrar la lista de anuncios por aquellos de los grupos de anuncios que contienen el nombre foo.

function main() {
    var campaigns = AdsApp.campaigns()
        .withIds(["CAMPAIGN ID GOES HERE"])
        .get();

    while (campaigns.hasNext()) {
        var campaign = campaigns.next();

        var ads = campaign.ads()
            .withCondition("AdGroupName CONTAINS_IGNORE_CASE 'foo'")
            .get();
        
        while (ads.hasNext()) {
            var ad = ads.next();

            if (ad.isType().expandedTextAd()) {
                var expandedAd = ad.asType().expandedTextAd();
            }
        }
    } 
}

Obtener todos los anuncios de la cuenta

Para obtener todos los anuncios de una cuenta, llame ads al método del objeto AdsApp . Puedes usar los métodos del selector de anuncios para filtrar la lista de anuncios por campañas, grupos de anuncios o en función del rendimiento de anuncios. En este ejemplo se obtienen todos los anuncios de la cuenta.

function main() {
    var ads = AdsApp.ads().get();

    while (ads.hasNext()) {
        var ad = ads.next();

        if (ad.isType().expandedTextAd()) {
            var expandedAd = ad.asType().expandedTextAd();
        }
    }
} 

Pausar un anuncio

Para pausar un anuncio, llama al método del pause anuncio. Dado que el pause método se basa en el objeto Ad base, no es necesario obtener primero el objeto derivado.

Si quieres habilitar o quitar un anuncio, simplemente llama al método del anuncio enable o remove al método. Para comprobar si el anuncio está habilitado o en pausa, llame al isEnabled método o isPaused .

Para obtener anuncios con un estado específico, usa el método del selector de withCondition anuncios. Por ejemplo, withCondition("Status = PAUSED).

function main() {
    var ads = AdsApp.ads()
        .forDateRange("LAST_WEEK")
        .withCondition("AdGroupName CONTAINS_IGNORE_CASE 'foo'")
        .withCondition('Status = ENABLED')
        .withCondition('Clicks < 5')
        .get();
 
    while (ads.hasNext()) {
        var ad = ads.next();
        ad.pause();
    }
}

Obtener anuncios no aprobados

Para ver un ejemplo que obtiene anuncios no aprobados, consulta Detectar anuncios no aprobados.