AdWords
313 Usuários online agora
313 Usuários online agora
Guie-me
star_border
Responder

erro de autorizaçao de script

Calouro ✭

Olá pessoal. 

tenho duas questões se alguém puder me ajudar...

1) estou tentando usar o script bid to position através da MCC. (peguei a versão mcc), segui os passos, porém o script não é  autorizado de jeito nenhum!. O que preciso fazer?

2) como configurar o script para agir em apenas campanhas de algumas contas? Isso é possível?

Especialistas responderamverified_user

Re: erro de autorizaçao de script

Principal Colaborador

@Sergio M, boa noite.

 

Tudo bem?

 

Esta gerando algum erro na autenticação? Se sim, poderia dar um print?

Ricardo Gaya

Re: erro de autorizaçao de script

Calouro ✭ ✭
Ricardo, então eu fiquei intrigado com a autorização do script e vendo e revendo eu vi que na verdade estava dando um conflito de com outro conta google aberta e daí ele não autorizava. mas autorizando testei o script (visualização) e apesar de ter inserido o label na conta ele fez os ajustes para todas as contas. então se tiver uma dica de como posso resolver isso, por favor. e vendo o script outro ponto seria reduzir o período de ajuste, pois ele esta previamente configurado para dados de uma semana, seria bom que fosse menos tempo, ou até mesmo real time, isso é possível?

e obrigado pelo interesse!

Re: erro de autorizaçao de script

Calouro ✭
Ricardo, então estou revendo o script mas acontece que ele não "obedece" ao label da campanha. ele roda para todas as campanhas e cada campanha tem uma necessidade diferente. posso postar o script aqui? Minha questão é que rodo ele pela conta Mcc e não direto em cada conta, para manter a minha estratégia oculta. Outra coisa, tem algum lugar para aprender mais sobre o script e poder usufruir mais do benefício de automatizaçaõ dele.

Re: erro de autorizaçao de script

Principal Colaborador

@Sergio M, tudo bem?

 

Precisava ver o código mesmo para tentar ajudar. Tecnicamente era para funcionar normalmente e reconhecer a label da campanha. Aqui nesse link você encontra tudo sobre documentação oficial do Google sobre os scripts do Adwords - https://developers.google.com/adwords/scripts/

 

Ricardo Gaya

Re: erro de autorizaçao de script

Calouro ✭
sim, segue o código.

// Copyright 2015, Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
* @name MCC Bid To Position
*
* @overview The MCC Bid To Position script adjusts your bids and allows you to
* steer ads in a group of advertiser accounts under your MCC account into
* a desired position in the search results.
* See https://developers.google.com/adwords/scripts/docs/solutions/mccapp-bid-to-position
* for more details.
*
* @author AdWords Scripts Team [adwords-scripts@googlegroups.com]
*
* @version 1.0
*
* @changelog
* - version 1.0
* - Released initial version.
*/

// An account-level label that identifies all the accounts you are trying to
// optimize.
var TARGET_ACCOUNT_LABEL = 'LoplastVendas';

// Ad position you are trying to achieve.
var TARGET_AVERAGE_POSITION = 1;

// Once the keywords fall within TOLERANCE of TARGET_AVERAGE_POSITION,
// their bids will no longer be adjusted.
var TOLERANCE = 0.1;

// How much to adjust the bids.
var BID_ADJUSTMENT_COEFFICIENT = 1.05;

// Email address to send the summary report. Leave blank to skip sending emails.
var EMAIL_ADDRESS = 'meuemail@gmail.com';

// List of email addresses to which summary report will be cc'd. Leave the array
// empty to skip sending email copies.
var EMAIL_CC_ADDRESS = ['meuemail@gmail.com'];

/**
* The main method.
*/
function main() {
var accountSelector = MccApp.accounts();
if (TARGET_ACCOUNT_LABEL != 'LoplastVendas') {
accountSelector.withCondition("Labels CONTAINS '" + TARGET_ACCOUNT_LABEL +
"'");
}
accountSelector.executeInParallel('adjustBids', 'sendEmail');
}
/**
* Adjusts the bid for a single account.
*
* @return {Object} a result object that has details about how many keyword
* bids were adjusted.
*/
function adjustBids() {
var raisedKeywordCount = raiseKeywordBids();
var loweredKeywordCount = lowerKeywordBids();
var retval = {
'raised': raisedKeywordCount,
'lowered': loweredKeywordCount
};
return JSON.stringify(retval);
}

/**
* Raises the bids for keywords in an account.
*
* @return {number} The number of keywords whose bids were raised.
*/
function raiseKeywordBids() {
// Condition to raise bid: Average position is worse (greater) than
// target + tolerance
var keywordsToRaise = AdWordsApp.keywords()
.withCondition('Status = ENABLED')
.withCondition('AveragePosition > ' + (TARGET_AVERAGE_POSITION + TOLERANCE))
.orderBy('AveragePosition ASC')
.forDateRange('YESTERDAY')
.get();

while (keywordsToRaise.hasNext()) {
var keyword = keywordsToRaise.next();
keyword.setMaxCpc(keyword.getMaxCpc() * BID_ADJUSTMENT_COEFFICIENT);
}
return keywordsToRaise.totalNumEntities();
}

/**
* Lowers the bids for keywords in an account.
*
* @return {number} The number of keywords whose bids were lowered.
*/
function lowerKeywordBids() {
// Conditions to lower bid: Ctr greater than 1% AND
// average position better (less) than target - tolerance
var keywordsToLower = AdWordsApp.keywords()
.withCondition('Ctr > 0.01')
.withCondition('AveragePosition < ' + (TARGET_AVERAGE_POSITION - TOLERANCE))
.withCondition('Status = ENABLED')
.orderBy('AveragePosition DESC')
.forDateRange('YESTERDAY')
.get();


while (keywordsToLower.hasNext()) {
var keyword = keywordsToLower.next();
keyword.setMaxCpc(keyword.getMaxCpc() / BID_ADJUSTMENT_COEFFICIENT);
}
return keywordsToLower.totalNumEntities();
}

/**
* Send summary report email to users.
*
* @param {Array.<ExecutionResult>} results the ExecutionResult array returned
* by executeInParallel method.
*/
function sendEmail(results) {
var emailBody = [];

emailBody.push(
'<html>',
'<body>',
'<table width=800 cellpadding=0 border=0 cellspacing=0>',
'<tr>',
'<td colspan=2 align=right>',
"<div style='font: italic normal 10pt Times New Roman, serif; " +
"margin: 0; color: #666; padding-right: 5px;'>" +
'Powered by AdWords Scripts</div>',
'</td>',
'</tr>',
"<tr bgcolor='#3c78d8'>",
'<td width=500>',
"<div style='font: normal 18pt verdana, sans-serif; " +
"padding: 3px 10px; color: white'>" +
'BidToPosition summary report</div>',
'</td>',
'<td align=right>',
"<div style='font: normal 18pt verdana, sans-serif; " +
"padding: 3px 10px; color: white'>",
AdWordsApp.currentAccount().getCustomerId(), '</h1>',
'</td>',
'</tr>',
'</table>',
'<table width=800 cellpadding=0 border=0 cellspacing=0>',
"<tr bgcolor='#ddd'>",
"<td style='font: 12pt verdana, sans-serif; " +
'padding: 5px 0px 5px 5px; background-color: #ddd; ' +
"text-align: left'>Customer ID</td>",
"<td style='font: 12pt verdana, sans-serif; " +
'padding: 5px 0px 5px 5px; background-color: #ddd; ' +
"text-align: left'>Results</td>",
'</tr>',
emailRows(results),
'</table>',
'</body>',
'</html>');


if (EMAIL_ADDRESS != '') {
MailApp.sendEmail(EMAIL_ADDRESS, 'BidToPosition summary report', '',
{htmlBody: emailBody.join('\n'), cc: EMAIL_CC_ADDRESS.join(',')});
}
}

/**
* Constructs email rows for each customer id processed by the script.
*
* @param {Array.<ExecutionResult>} results the ExecutionResult array returned
* by executeInParallel method.
* @return {string} the html body corresponding to the customer ids processed
* by the script and its results.
*/
function emailRows(results) {
var rows = [];
for (var i = 0; i < results.length; i++) {
var result = results[i];

rows.push('<tr>',
"<td style='padding: 5px 10px'>" + result.getCustomerId() + '</td>',
"<td style='padding: 0px 10px'>" + getResultDescription(result) +
'</td>',
'</tr>');
}
return rows.join('\n');
}

/**
* Gets a description text for execution results on a customer id.
*
* @param {ExecutionResult} result the ExecutionResult object returned
* by executeInParallel method for the customer id.
* @return {string} a processed text that summarizes the execution result.
*/
function getResultDescription(result) {
if (result.getStatus() == 'OK') {
var retval = JSON.parse(result.getReturnValue());
return 'Raised : ' + retval.raised + ' < br / > ' +
'Lowered : ' + retval.lowered;
} else if (result.getStatus() == 'ERROR') {
return result.getError();
} else {
return 'Script timed out.';
}
}

Re: erro de autorizaçao de script

[ Editado ]
Principal Colaborador

Sergio M escreveu:

var accountSelector = MccApp.accounts();
if (TARGET_ACCOUNT_LABEL != 'LoplastVendas') {
accountSelector.withCondition("Labels CONTAINS '" + TARGET_ACCOUNT_LABEL +
"'");

Acho que existe um erro de lógica aqui - não seria na verdade: 

if (TARGET_ACCOUNT_LABEL != '') {

accountSelector.withCondition("Labels CONTAINS '" + TARGET_ACCOUNT_LABEL +
"'");

 

Pois do modo que está o seletor de conta jamais é executado  - provavelmente você fez uma mudança nesta linha que não deveria.

 

No demais - você não precisa de um script para ajustar os lances para a primeira posição - basta mudar os lances de todas as palavras  da conta para um valor bem elevado, que seus concorrentes em sã consciência jamais iriam fazer, tipo: cpc max= R$ 100 - o efeito é exatamente o mesmo do script pois você não vai pagar R$ 100 por clique e sim o valor necessário para manter na primeira posição - você jamais irá pagar um centavo a mais do que iria pagar executando o script - com a vantagem  que não precisa ficar executando durante semanas o script - faz tanto sentido quanto um script que fica aumentando o lances das palavras para ficarem na primeira posição - é jogar dinheiro fora, pois quanto maior o valor do cpc com o anúncio já aparecendo nas primeiras posições, menos cliques você recebe. 

 

___

"Você não precisa de uma empresa de 100 funcionários para desenvolver aquela ideia" ~Larry Page

Re: erro de autorizaçao de script

Calouro ✭
Entendi! Agradeço sua observação e concordo com a lógica.

Na verdade o que gostaria com este script era ajustar a posição todos os
dias para a segunda posição. porém observei que se o google conta o
shopping como primeira posição, então meu anuncio vai para o rodape da
pagina (aqueles que ficam lá embaixo) daí calculei para uma determinada
campanha a primeira posição.

mas me interessaria obter a variação de um dia para o outro.

aproveito para perguntar se há script que permitem gerenciamento de
campanhas ou grupos de anuncios no sentido de pausar um dia ou dois e
ativar após este período com o intuito de se fazer um rodízio de anuncios
de produtos.