Acceso a una sola cuenta

Si quieres acceder a una sola cuenta de usuario, todo comienza con el objeto AdsApp .

Cómo acceder a las entidades de mi cuenta?

Use AdsApp para acceder a todas las entidades de la cuenta. El objeto contiene un método selector para cada tipo de entidad (por ejemplo, campañas, grupos de anuncios y palabras clave). El método selector devuelve todas las entidades de ese tipo de entidad. Por ejemplo, para obtener todos los grupos de anuncios de la cuenta, llame al adGroups() método .

    var iterator = AdsApp.adGroups().get();

¿Pero qué ocurre si quiero una entidad o un subconjunto de entidades específicos?

El selector proporciona diferentes formas de filtrar la lista de entidades. Puede usar el método del withIds() selector para obtener entidades específicas por identificadores o puede usar withCondition() para especificar los criterios de selección para seleccionar las entidades. Los selectores de todos los tipos de entidad, excepto las listas de palabras clave negativas, proporcionan la capacidad de filtrar la lista de entidades.

Use la notación de puntos para encadenar varios filtros juntos. Si especifica varios filtros, se tratan como una operación AND: el selector devuelve solo las entidades que coinciden con todas las condiciones.

Para obtener todos los grupos de anuncios de una campaña, use el withCondition() método para especificar el nombre de la campaña.

    var campaignName = 'My Campaign';
    var iterator = AdsApp.adGroups()
        .withCondition(`CampaignName = '${campaignName}'`)
        .get();

Para obtener una lista de condiciones y operadores que puede usar para filtrar la lista de entidades, consulte el método del withCondition() selector. Por ejemplo, para obtener una lista de las condiciones del grupo de anuncios, consulta el método withCondition del selector de grupos de anuncios.

Para obtener un grupo de anuncios por identificador, use el withIds() método para especificar el grupo de anuncios que se va a obtener.

    var ids = ["123456789"];
    var iterator = AdsApp.adGroups()
        .withIds(ids)
        .get();

O bien, puedes obtener el grupo de anuncios por nombre.

    var campaignName = 'My Campaign';
    var adGroupName = 'My AdGroup';
    var iterator = AdsApp.adGroups()
        .withCondition(`CampaignName = '${campaignName}'`)
        .withCondition(`Name = '${adGroupName}'`)
        .get();

Para obtener más información sobre los selectores, consulte ¿Qué son los selectores?

Cómo usar el selector para recorrer en iteración la lista filtrada de entidades?

Tú no. El selector solo define las entidades que desea obtener. Para obtener realmente las entidades, use un iterador. Para obtener el iterador, llame al método del get() selector.

    var ids = ["123456789"];
    var iterator = AdsApp.adGroups()
        .withIds(ids)
        .get();

Use un bucle while simple para recorrer en iteración la lista de entidades.

    while (iterator.hasNext()) {
        var adGroup = iterator.next();
        
        // Do something with the entity
    }

Para obtener más información sobre los iteradores, vea ¿Qué son los iteradores?

Cómo obtener datos de rendimiento de una entidad?

La mayoría de las entidades permiten solicitar datos de rendimiento, si están disponibles. Pero primero debe indicar a los scripts el intervalo de fechas de los datos de rendimiento al especificar el selector. Para especificar un intervalo de fechas, use un literal predefinido, como YESTERDAY o LAST_MONTH, o use una fecha de inicio y finalización. Para obtener más información, vea forDateRange(string dateRange) y forDateRange(Object dateFrom, Object dateTo).

    var campaignName = 'My Campaign';
    var adGroupName = 'My AdGroup';
    var iterator = AdsApp.adGroups()
        .forDateRange('LAST_30_DAYS')
        .withCondition(`CampaignName = '${campaignName}'`)
        .withCondition(`Name = '${adGroupName}'`)
        .get();

    while (iterator.hasNext()) {
        var adGroup = iterator.next();
        var stats = adGroup.getStats();
    }

También debe especificar un intervalo de fechas si especifica una columna de datos de rendimiento en el método de withCondition() un selector. Por ejemplo, si solo quieres grupos de anuncios que tengan una CTR superior al .22 por ciento, debes especificar un intervalo de fechas.

    var startDate = {year: 2018, month: 6, day: 3};
    var endDate = {year: 2018, month: 6, day: 13};

    var iterator = AdsApp.adGroups()
        .forDateRange(startDate, endDate)
        .withCondition("Ctr > 0.22")
        .get();

Cómo agregar una entidad?

Para agregar una entidad, se usa un objeto builder. Para obtener un objeto de generador, llame al método new* en el objeto primario al que va a agregar elementos secundarios. Por ejemplo, para agregar grupos de anuncios a una campaña, llame al método de la newAdGroupBuilder() campaña.

El objeto builder contiene métodos para establecer todas las propiedades del objeto que se le permite especificar. También incluye un build() método que se usa para crear la entidad. A continuación se muestra cómo crear un grupo de anuncios. (Para obtener información sobre cómo obtener un objeto de campaña, consulte Obtención de una campaña por nombre).

        var adGroupName = "My ad group";
        var endDate = {year: 2018, month: 6, day: 13};
        var customParameters = {key1: 'value1', key2: 'value2', key3: 'value3'};

        var adGroupOperation = campaign.newAdGroupBuilder()
            .withName(adGroupName)
            .withStatus('ENABLED')
            .withLanguage('English')
            .withBiddingStrategy('MANUAL_CPC')
            .withCpc(1.2)
            .withCustomParameters(customParameters)
            .withEndDate(endDate)
            .build();

El build método devuelve un objeto de operación, que puede usar para comprobar si scripts crearon correctamente la entidad. A continuación se muestra el patrón de llamada típico. Llame al getResult método solo si desea tener acceso a las propiedades de la nueva entidad.

    if (adGroupOperation.isSuccessful()) {
        var adGroup = adGroupOperation.getResult();

    }
    else {
        for (var error of adGroupOperation.getErrors()) {
            Logger.log(`${error}\n`);
        }
    }

Para obtener más información sobre los generadores y las consideraciones de rendimiento al llamar a los métodos de operación, consulte ¿Qué son los generadores?

Cómo actualizar una entidad?

Después de usar un objeto builder para agregar una entidad, se usan los métodos de la entidad para actualizar sus propiedades. En el ejemplo siguiente se actualiza el importe de la oferta de CPC del grupo de anuncios.

    var ids = ["123456789"];
    var adGroups = AdsApp.adGroups()
        .withIds(ids)
        .get();

    if (adGroups.hasNext()) {
        var adGroup = adGroups.next();
        adGroup.bidding().setCpc(2.5);
    }

Pero, ¿cómo sé que la actualización funcionó?

Si intenta actualizar una propiedad con un valor no válido, Scripts escribe un error en el registro de cambios, pero no produce una excepción, por lo que el script continúa ejecutándose. No obtenga la propiedad después de actualizarla para comprobar si la propiedad contiene el nuevo valor; esto afecta negativamente al rendimiento.

function main() {
    var id = "123456789";
    var bidAmount = -2.5;  
    var keyword = getKeyword(id); 

    if (keyword != null) {
        keyword.bidding().setCpc(bidAmount);  // Bid is not set because bid amount is not valid
    }

}

function getKeyword(id) {
    var keywords = AdsApp.keywords()
        .withIds([id])
        .get();

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

Escritura en el archivo de registro

Los scripts proporcionan un archivo de registro en el que escribir información de seguimiento y depuración. Para obtener información, vea Cambiar registros y registros de texto.

Pasos siguientes