La
AdsManagerApp
clase en las secuencias de comandos de Google Ads te permite administrar las cuentas vinculadas a 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
Puedes recuperar las cuentas de una cuenta de administrador con el
accounts
método. 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:
- Las cuentas de administrador no se pueden recuperar 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. Puedes anular este comportamiento llamando a
withConditiony especificando un filtro diferente paracustomer_client.status.
De forma predeterminada, la llamada accounts recupera la lista de todas las cuentas de cliente en la jerarquía de la cuenta de administrador. Puedes usar el
withLimit
método de la
ManagedAccountSelector
clase para restringir la cantidad de cuentas que recupera tu secuencia de comandos. Otra
opción es seleccionar las cuentas por sus IDs de cliente con el
withIds
método:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Cómo trabajar con cuentas de cliente
Una vez que hayas recuperado las cuentas de cliente, puedes iterar a través de ellas con
los métodos
hasNext
y
next
del iterador. Debes usar el
select
método para cambiar el contexto de ejecución a una cuenta de cliente. Después de seleccionar una cuenta de cliente, todas las llamadas posteriores a la API se aplican a esa cuenta hasta que selecciones explícitamente otra:
// 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 Search and Display campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
Cómo trabajar con cuentas en paralelo
Las secuencias de comandos de Google Ads te permiten operar en varias cuentas de cliente en paralelo 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 coincida con
ManagedAccountSelector. Una vez que se procesan todas las cuentas, la función de devolución de llamada, si
se especifica con optionalCallbackFunctionName, se ejecuta una vez y pasa una lista
de
ExecutionResult
objetos como argumento para cualquier procesamiento posterior. Aquí 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
...
}
}
La función especificada por functionName puede aceptar de forma opcional un argumento de cadena (optionalInput). Este parámetro se puede usar para pasar un parámetro adicional a todos los métodos paralelos 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 específicos de la cuenta, primero puedes convertirlo en una cadena con el
JSON.stringify
método:
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
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
ExecutionResult
objetos. Si mostraste una cadena JSON desde la función, puedes volver a convertirla
en un objeto de JavaScript con el
JSON.parse
método:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
El
executeInParallel
método 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 el
withLimit
o el
withIds
método de la clase
ManagedAccountSelector
para restringir la cantidad de cuentas que recupera tu secuencia de comandos.
Límites de tiempo de ejecución
Consulta la documentación de límites para obtener detalles sobre los límites de tiempo de ejecución de las secuencias de comandos de Ads Manager.