La clase AdsManagerApp
en las secuencias de comandos de Google Ads te permite administrar las cuentas vinculadas en tu cuenta de administrador. Puedes administrar todas tus cuentas de anunciante a través de una sola secuencia de comandos en lugar de crear una secuencia de comandos independiente para cada cuenta.
Cómo recuperar una lista de cuentas
Para recuperar cuentas de una cuenta de administrador, puedes usar el
accounts
por ejemplo:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
Existen algunas restricciones para las cuentas que se pueden recuperar:
- No se pueden recuperar las cuentas de administrador si tienes una jerarquía de varios niveles. Solo se pueden seleccionar las cuentas de cliente.
- De forma predeterminada, no se muestran las cuentas cerradas, canceladas ni suspendidas. Tú
puede anular este comportamiento llamando a
withCondition
especificando un filtro paracustomer_client.status
.
La llamada accounts
recupera la lista de todas las cuentas de cliente de la
de la cuenta de administrador de forma predeterminada. Puedes usar la
withLimit
método de la
ManagedAccountSelector
para restringir el número de cuentas que recupera tu secuencia de comandos. Otra opción es seleccionar las cuentas por sus IDs de cliente con el método withIds
:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Cómo trabajar en cuentas de cliente
Una vez que hayas recuperado las cuentas cliente, puedes iterar a través de ellas con
el iterador
hasNext
y
next
. Debes usar el método select
para cambiar el contexto de ejecución a una cuenta de cliente. Después de seleccionar una cuenta de cliente, las llamadas a la API adicionales se aplican a la cuenta de cliente hasta que selecciones explícitamente otra cuenta:
// 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
...
}
Trabaja en cuentas en paralelo
Las secuencias de comandos de Google Ads te permiten operar en varias cuentas de cliente de forma simultánea, con el
executeInParallel
método de la
ManagedAccountSelector
clase. El método executeInParallel
tiene la siguiente firma:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
El método executeInParallel
ejecuta una función especificada por functionName
.
en cada
ManagedAccount
que el
ManagedAccountSelector
coincidencias. Una vez procesadas todas las cuentas, la función de devolución de llamada, si
especificado por optionalCallbackFunctionName
, se ejecuta una vez y pasa una lista
de
ExecutionResult
como su argumento para cualquier procesamiento posterior. A continuación, se muestra el uso típico:
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
...
}
}
De manera opcional, la función especificada por functionName
puede aceptar un argumento de cadena (optionalInput
). Este parámetro se puede usar para pasar un parámetro adicional a todos los métodos en paralelo a los que llama 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.
...
}
Si deseas pasar un objeto de configuración de JavaScript que contenga parámetros de configuración específicos de la cuenta, primero puedes convertirlo en una cadena con el método 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.
...
}
La función especificada por functionName
también puede mostrar una cadena en lugar de un objeto a través de JSON.stringify
:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
Los valores que se muestran se pasan a la función de devolución de llamada en una lista de objetos ExecutionResult
. Si devuelves una cadena JSON desde la función, puedes convertirla.
de vuelta en un objeto de JavaScript con
JSON.parse
método:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
El método executeInParallel
opera en un máximo de 50 accounts
, por lo que deberás implementar tus propias restricciones para limitar la cantidad de cuentas que recupera tu secuencia de comandos. Puedes usar la
withLimit
o
withIds
método de
ManagedAccountSelector
para restringir el número de cuentas que recupera tu secuencia de comandos.
Límites de tiempo de ejecución
Consulta esta página para obtener detalles sobre los límites de tiempo de ejecución de las secuencias de comandos de Administrador de anuncios.