900 Usuários online agora
900 Usuários online agora
Bem-vindos à Comunidade Oficial do Google AdWords
star_border

[script] Programação automática para pausar/ativar contas de MCC

Eventualmente é necessário pausar as campanhas ativas por causa de feriados, por exemplo. É fácil pausar e ativar as campanhas de 1, 3, 5 contas, mas quando se tem uma MCC com muitas (10, 30, 50, etc) essa tarefa fica relativamente chata, demorada e complexa. Pensando nisso, desenvolvi um script que roda a nível MCC para automatizar essa tarefa.

 

Como funciona

 

Basta adicionar numa planilha (link abaixo) o ID de cliente, data para pausar as campanhas e data para ativá-las novamente. Na interface de script para MCC, programe o script para ser executado a cada hora.

 

Deixe que a mágica aconteça.

 

Como configurar

 

  1. Faça uma cópia desta planilha através da conta com acesso à MCC; copie a URL da nova planilha.
  2. Adicionar o script na MCC e colar a URL copiada na variável spreadsheet_url.
  3. Programar o script para ser executado a cada hora.

Observações importantes

 

- Insira as datas no formato DD/MM/AAAA.

- Faça um teste antes de sair de férias.

- Se encontrar algum erro, me avise.

- Se tiver alguma dúvida, deixe um comentário.

 

Script

 

/* 

v1.2
Data: 23/07/2014

*/

var spreadsheet_url = "SUBSTITUA ISSO PELA URL DA PLANILHA";

var MARCADOR = "pausa_programada";

function main() {

    var spreadsheet = SpreadsheetApp.openByUrl(spreadsheet_url);
    var sheet = spreadsheet.getSheetByName('programação');

    var last_row = sheet.getLastRow();
  
    var limit = 100;
    var current = 0;

    for (r = 2; r <= last_row; r++) {
    
        if (current == limit) break;

        var id_account = sheet.getRange(r, 1).getValue();

        var pausar_em = sheet.getRange(r, 2).getValue();
        var ativar_em = sheet.getRange(r, 3).getValue();

        var status_pausado = sheet.getRange(r, 4).getValue();
        var status_ativado = sheet.getRange(r, 5).getValue();

        if (pausar_em != '' && ativar_em != '' && id_account != '') {
            
            var account = MccApp.accounts().withIds([id_account]).get();

            if (account.hasNext()) {

                MccApp.select(account.next());
                
                var tz = AdWordsApp.currentAccount().getTimeZone();
                var format = "MMM dd,yyyy HH:mm:ss";

                var agora = new Date(Utilities.formatDate(new Date(), tz, format));
                var pausar_em = new Date(Utilities.formatDate(pausar_em, tz, format));
                var ativar_em = new Date(Utilities.formatDate(ativar_em, tz, format));

                if (status_pausado != 'ok' && agora >= pausar_em && agora < ativar_em) {

                    pauseCampaigns();

                    sheet.getRange(r, 4).setValue('ok');
                    
                    current++;

                } else {

                    enableCampaigns();
                  
                    sheet.getRange(r, 5).setValue('ok');

                }

            }

        }

    }

}

function createLabel(name) {

    var labelIterator = AdWordsApp.labels().withCondition("Name = '" + name + "'").get();

    if (!labelIterator.hasNext()) {

        AdWordsApp.createLabel(name);

    }

}

function deleteLabel(name) {

    var labelIterator = AdWordsApp.labels().withCondition("Name = '" + name + "'").get();

    if (labelIterator.hasNext()) {

        labelIterator.next().remove();

    }

}

function pauseCampaigns() {

    createLabel(MARCADOR);

    var campaignIterator = AdWordsApp.campaigns().withCondition("Status = ENABLED").get();

    while (campaignIterator.hasNext()) {

        var campaign = campaignIterator.next();

        campaign.applyLabel(MARCADOR);
        campaign.pause();

    }

}

function enableCampaigns() {

    var labelIterator = AdWordsApp.labels().withCondition("Name = '" + MARCADOR + "'").get();

    if (labelIterator.hasNext()) {

        var campaignIterator = labelIterator.next().campaigns().get();

        while (campaignIterator.hasNext()) {

            var campaign = campaignIterator.next();

            campaign.enable();

        }

        deleteLabel(MARCADOR);

    }

}

Comentários
por DaniloSPeres Estrela em Ascensão
Julho 2014

Bruno muito bacana, vou ser sincero que ainda nunca utilizei Scripts, mas, em um futuro não tão distante isso irá acontecer.

 

Tem um outro artigo que fala algo semelhante, dá uma olhada:

https://www.pt.adwords-community.com/t5/Artigos-de-Usu%C3%A1rios/Scripts-Pausar-Campanhas-em-Feriado...


Abraços.

por AntonioMuniz Principal Colaborador
Julho 2014

mto bom Bruno, parabéns pelo artigo e pelo script

por Gravity Principal Colaborador
Julho 2014

Muito bom Bruno!!

 

Show!

por Caio A Funcionário do Google
Julho 2014

Oi Bruno!  Smiley muito feliz

 

Parabéns pelo artigo!

 

Seu post já está no Facebook e no Twitter do AdWords. Smiley feliz

Tags