Script per amministratori Ads

La classe AdsManagerApp nello script Google Ads ti consente di gestire gli account collegati nel tuo account amministratore. Puoi gestire tutti gli account inserzionista tramite un unico script anziché creare uno script separato per ogni account.

Recuperare l'elenco degli account

Puoi recuperare gli account di un account amministratore utilizzando il metodo accounts, ad esempio:

const accountSelector = AdsManagerApp.accounts()
    .withCondition('customer_client.descriptive_name = "My Account"');

const accountIterator = accountSelector.get();

Esistono alcune limitazioni agli account che possono essere recuperati:

  • Gli account amministratore non possono essere recuperati se hai una gerarchia su più livelli. È possibile selezionare solo gli account cliente.
  • Per impostazione predefinita, gli account chiusi, annullati e sospesi non vengono restituiti. Puoi eseguire l'override di questo comportamento chiamando withCondition specificando un filtro diverso per customer_client.status.

Per impostazione predefinita, la chiamata accounts recupera l'elenco di tutti gli account cliente nella gerarchia dell'account amministratore. Puoi utilizzare il metodo withLimit della classe ManagedAccountSelector per limitare il numero di account recuperati dallo script. Un'altra opzione è selezionare gli account in base ai relativi ID cliente utilizzando il metodo withIds:

// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
    .withIds(['123-456-7890', '234-567-8901', '345-678-9012']);

Lavorare sugli account cliente

Dopo aver recuperato gli account cliente, puoi eseguirne l'iterazione utilizzando i metodi hasNext e next dell'iteratore. Devi utilizzare il metodo select per cambiare il contesto di esecuzione in un account cliente. Dopo aver selezionato un account cliente, tutte le chiamate API successive vengono applicate 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 campaigns under the client account
  const campaignIterator = AdsApp.campaigns().get();

  // Operate on client account
  ...
}

Lavorare su account in parallelo

Gli script Google Ads ti consentono di operare su più account cliente in parallelo utilizzando il metodo executeInParallel della classe ManagedAccountSelector. Il metodo executeInParallel ha la seguente firma:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

Il metodo executeInParallel 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 oggetti ExecutionResult come argomento per qualsiasi ulteriore elaborazione. L'utilizzo tipico è riportato di seguito:

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ò facoltativamente accettare 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 contenente impostazioni specifiche dell'account, puoi prima convertirlo in una stringa utilizzando il metodo 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 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 oggetti ExecutionResult. Se hai restituito una stringa JSON dalla funzione, puoi riconvertirla in un oggetto JavaScript utilizzando il metodo JSON.parse:

function callbackFunctionName(results) {
  for (var i = 0; i < results.length; i++) {
    var resultObj = JSON.parse(results[i].getReturnValue());
  }
}

Il metodo executeInParallel funziona su un massimo di 50 accounts, pertanto dovrai implementare le tue limitazioni per limitare il numero di account recuperati dallo script. Puoi utilizzare il metodo withLimit o withIds della classe ManagedAccountSelector per limitare il numero di account recuperati dallo script.

Limiti di tempo di esecuzione

Consulta questa pagina per informazioni dettagliate sui limiti di tempo di esecuzione degli script di Ads Manager.