La
AdsManagerApp
classe negli script Google Ads ti consente di gestire gli account collegati al tuo
account amministratore. Puoi gestire tutti i tuoi account inserzionista tramite un singolo script anziché creare uno script separato per ogni account.
Recuperare l'elenco degli account
Puoi recuperare gli account di un account amministratore utilizzando il
accounts
metodo, ad esempio:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
Esistono alcune limitazioni per gli account che possono essere recuperati:
- Gli account amministratore non possono essere recuperati se hai una gerarchia multilivello. È possibile selezionare solo gli account cliente.
- Per impostazione predefinita, gli account chiusi, annullati e sospesi non vengono restituiti. Puoi ignorare questo comportamento chiamando
withConditione specificando un filtro diverso percustomer_client.status.
Per impostazione predefinita, la chiamata accounts recupera l'elenco di tutti gli account cliente nella gerarchia dell'account amministratore. Puoi utilizzare il
withLimit
metodo della
ManagedAccountSelector
classe per limitare il numero di account recuperati dallo script. Un'altra
opzione è selezionare gli account in base ai relativi ID cliente utilizzando il
withIds
metodo:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Utilizzare gli account cliente
Una volta recuperati gli account cliente, puoi scorrerli utilizzando
i metodi
hasNext
e
next. Devi utilizzare il
select
metodo per passare il contesto di esecuzione a un account cliente. Dopo aver selezionato un account cliente, tutte le chiamate API successive si applicano all'account cliente finché non ne selezioni esplicitamente un altro:
// 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
...
}
Utilizzare gli account in parallelo
Gli script Google Ads ti consentono di operare su più account cliente in parallelo utilizzando il
executeInParallel
metodo della
ManagedAccountSelector
classe. Il metodo executeInParallel ha la seguente firma:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
Il executeInParallel metodo esegue una funzione specificata da functionName
su ogni
ManagedAccount
corrispondente a
ManagedAccountSelector. Una volta elaborati tutti gli account, la funzione di callback, se
specificata da optionalCallbackFunctionName, viene eseguita una volta, passando un elenco
di
ExecutionResult
oggetti come argomento per l'ulteriore elaborazione. Di seguito è riportato l'utilizzo tipico:
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 funzione specificata da functionName può accettare facoltativamente un argomento stringa (optionalInput). Questo parametro può essere utilizzato per passare un parametro aggiuntivo a tutti i metodi paralleli chiamati da 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 vuoi passare un oggetto di configurazione JavaScript che contiene
impostazioni specifiche dell'account, puoi prima convertirlo in una stringa utilizzando il
JSON.stringify
metodo:
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 funzione specificata da functionName può anche restituire una stringa anziché un
oggetto tramite
JSON.stringify:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
I valori restituiti vengono passati alla funzione di callback in un elenco di
ExecutionResult
oggetti. Se hai restituito una stringa JSON dalla funzione, puoi riconvertirla
in un oggetto JavaScript utilizzando
JSON.parse
metodo:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
Il
executeInParallel
metodo opera su un massimo di 50
accounts,
quindi dovrai implementare le tue restrizioni per limitare il numero di
account recuperati dallo script. Puoi utilizzare il
withLimit
o il
withIds
metodo della classe
ManagedAccountSelector
per limitare il numero di account recuperati dallo script.
Limiti di tempo di esecuzione
Per informazioni dettagliate sui limiti di tempo di esecuzione degli script di Ads Manager, consulta la documentazione sui limiti.