O
AdsManagerApp
nos scripts do Google Ads permite que você gerencie contas vinculadas na sua
Conta de administrador. Você pode gerenciar
todas as suas contas de anunciante por meio de um único script, em vez de criar uma
um script separado para cada conta.
Recuperar lista de contas
É possível recuperar contas em uma conta de administrador usando o método
accounts
,
por exemplo:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
Há algumas restrições para as contas que podem ser recuperadas:
- Não é possível recuperar contas de administrador se você tiver uma hierarquia de vários níveis. Somente as contas de cliente podem ser selecionadas.
- Por padrão, contas encerradas, canceladas e suspensas não são retornadas. Você
pode substituir esse comportamento chamando
withCondition
, especificando uma filtro paracustomer_client.status
.
A chamada accounts
recupera a lista de todas as contas de cliente na hierarquia da conta de administrador por padrão. Você pode usar o método
withLimit
da classe
ManagedAccountSelector
para restringir o número de contas que o script recupera. Outra
opção é selecionar as contas pelos IDs de cliente usando o
método
withIds
:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Trabalhar em contas de cliente
Depois de recuperar as contas de clientes, você pode interagir com elas usando
do iterador
hasNext
e
next
métodos. É necessário usar o método
select
para mudar o contexto de execução para uma conta de cliente. Depois de selecionar
conta de cliente, todas as outras chamadas de API serão aplicadas a ela até que você
selecionar outra conta explicitamente:
// Keep track of the manager account for future reference.
const managerAccount = AdsApp.currentAccount();
// Select your accounts
const accountIterator = AdsManagerApp.accounts()
// ... Write some logic here to select the accounts you want using
// withCondition or withIds
// Iterate through the list of accounts
for (const account of accountIterator) {
// Select the client account.
AdsManagerApp.select(account);
// Select campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
Trabalhar em contas paralelas
Os scripts do Google Ads permitem operar em várias contas de cliente em paralelo usando o método
executeInParallel
da classe
ManagedAccountSelector
. O método executeInParallel
tem a seguinte assinatura:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
O método executeInParallel
executa uma função especificada por functionName
.
em cada
ManagedAccount
que o
ManagedAccountSelector
correspondências. Depois que todas as contas forem processadas, a função de callback, se
especificada por optionalCallbackFunctionName
, será executada uma vez, transmitindo uma lista
de objetos
ExecutionResult
como argumento para qualquer processamento adicional. O uso típico é mostrado
abaixo:
function main() {
const accountSelector = AdsManagerApp.accounts()
.withLimit(50)
.withCondition('customer_client.currency_code = "USD"');
accountSelector.executeInParallel("processClientAccount", "afterProcessAllClientAccounts");
}
function processClientAccount() {
const clientAccount = AdsApp.currentAccount();
// Process your client account here.
...
// optionally, return a result, as text.
return "";
}
function afterProcessAllClientAccounts(results) {
for (const result of results) {
// Process the result further
...
}
}
A função especificada por functionName
pode aceitar uma string opcionalmente.
argumento (optionalInput
). Esse parâmetro pode ser usado para transmitir um valor adicional
a todos os métodos paralelos chamados por executeInParallel
:
function main() {
const accountSelector = AdsManagerApp.accounts().withIds([1234567890, 3456787890]);
const sharedParameter = "INSERT_SHARED_PARAMETER_HERE";
accountSelector.executeInParallel("processClientAccount", null, sharedParameter);
}
function processClientAccount(sharedParameter) {
// Process your client account here.
...
}
Se você quiser transmitir um objeto de configuração JavaScript que contenha
específicas da conta, você pode convertê-la em uma string usando o
JSON.stringify
:
function main() {
...
const accountFlags = {
'1234567890': {
'label': 'Brand 1 campaigns',
},
'3456787890': {
'label': 'Brand 2 campaigns',
}
};
accountSelector.executeInParallel("processClientAccount", null,
JSON.stringify(accountFlags));
...
}
function processClientAccount(sharedParameter) {
const accountFlags = JSON.parse(sharedParameter);
// Process your client account here.
...
}
A função especificada por functionName
também pode retornar uma string em vez de uma
por meio de
JSON.stringify
:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
Os valores retornados são transmitidos para a função de callback em uma lista de
objetos
ExecutionResult
. Se você retornou uma string JSON da função, poderá convertê-la
de volta a um objeto JavaScript
JSON.parse
:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
O
executeInParallel
opera em um máximo de 50 instâncias
accounts
,
portanto, você terá que implementar suas próprias restrições para limitar o número de
que o script recupera. É possível usar o método
withLimit
ou
withIds
da classe
ManagedAccountSelector
para restringir o número de contas que o script extrai.
Limites de tempo de execução
Consulte esta página para saber mais sobre os limites de tempo de execução dos scripts do Gerenciador de anúncios.